Mengapa Anda tidak segera melakukan perubahan yang digabungkan?


16

Kantor saya menggunakan Git dan SourceTree untuk kontrol versi kami. Ini terjadi karena ketika saya bergabung ada kontrol versi nol dan SourceTree adalah satu-satunya sistem yang pernah saya gunakan. Saya bukan ahli dengan cara apa pun, tetapi saya adalah yang paling berpengalaman dari rekan kerja saya, jadi saya adalah ahli de facto yang bertanggung jawab untuk mengajar semua orang menggunakan Git dengan benar dan memperbaiki kesalahan yang mereka buat.

Saya membuat dokumen tutorial yang melewati Git dan SourceTree dan menjelaskan setiap langkah proses. Dalam proses Tarik, dialog SourceTree memungkinkan Anda untuk memilih opsi "Komit perubahan yang digabungkan segera". Saya mengerti apa ini dan mengapa ini berguna. Yang tidak saya mengerti adalah mengapa ada orang yang tidak mau menggunakan fitur ini.

Bisakah seseorang menjelaskan mengapa Anda tidak ingin perubahan gabungan Anda dilakukan secara otomatis? Saya mencoba memahami alasannya sehingga saya dapat menjelaskan kegunaan fitur dengan lebih baik dan mendapatkan ide tentang perangkap apa yang harus diwaspadai di masa depan.

Sunting: Saya tidak percaya pertanyaan saya adalah duplikat dari pertanyaan terkait. Pertanyaan terkait secara luas menanyakan seberapa sering untuk melakukan. Saya bertanya mengapa seseorang memilih untuk tidak menggunakan fitur spesifik yang terkait dengan penggabungan komit di SourceTree.



1
Apakah Anda menginginkan alasan yang bagus? Karena saya dapat memberikan berbagai alasan untuk menunda memeriksa kode yang pernah saya dengar di dunia, tetapi beberapa di antaranya adalah alasan yang bagus.
whatsisname

Satu-satunya alasan yang dapat saya pikirkan adalah ketika penggabungan gagal karena menggabungkan konflik. Tetapi SourceTree tidak akan melakukan jika itu terjadi.
Robert Harvey

Di samping catatan: Mengapa Anda menulis tutorial Anda sendiri? bitbucket sudah memiliki tutorial yang bagus. confluence.atlassian.com/bitbucket/…
winkbrace

@winkbrace Kami tidak menggunakan Bitbucket; kami menyimpan semuanya di jaringan lokal. Saya mereferensikan tutorial hebat Atlassian , tetapi saya menginginkan sesuatu yang sedikit lebih ringkas yang bisa saya berikan kepada orang-orang yang baru mengenal Git dan kontrol versi. Ini benar-benar lebih merupakan pengantar dan prosedural "ini adalah bagaimana dan mengapa Anda melakukan / push / pull / etc" sehingga orang dapat langsung berlari.
David K

Jawaban:


26

Saya tidak ingin menggunakan fitur ini.

Fakta bahwa tidak ada konflik berarti cukup banyak bahwa perubahan yang digabungkan di cabang saya kira-kira tidak dalam baris kode yang sama dengan yang saya buat. Itu tidak berarti bahwa perubahan itu kompatibel dengan perubahan saya. Itu tidak berarti bahwa kode akan dikompilasi, atau bahwa kode akan berfungsi, atau bahwa tes akan berlalu.

Dengan kata lain, dengan menggunakan opsi ini saya berpotensi berakhir dengan komit palsu kode yang mungkin tidak dalam keadaan baik dan yang memerlukan komit baru untuk memperbaikinya. Karena saya melakukan pekerjaan ini lagian, dan karena saya tidak pernah harus mendorong ini palsu berkomitmen hulu, bahkan oleh kesalahan (Goodness melarang, seseorang kemudian dapat menggabungkan bahwa dalam beberapa cabang lainnya!), Saya tidak melihat alasan untuk membuat ini komit dalam pertama tempat.


Agaknya, Anda sedang membuat cabang fitur, dan tidak menggabungkan setiap perubahan kecil ke cabang utama. Penggabungan tidak mungkin menyebabkan konflik pada cabang fitur kecuali beberapa orang bekerja pada kelas yang sama pada cabang fitur yang sama.
Robert Harvey

4
@ RobertTarvey Ya tapi saya mungkin sering menggabungkan cabang utama ke cabang saya. Ada asumsi tersembunyi dalam komentar Anda bahwa fitur yang berbeda secara alami akan menyentuh kelas / modul yang berbeda, tetapi tidak semua orang beruntung. Dengan keberuntungan Anda memiliki kelas Dewa di suatu tempat yang setiap orang yang melakukan sesuatu perlu disentuh, dan Anda tidak dapat berbuat banyak tentang hal itu. Juga ada fitur lintas sektor (upgrade beberapa perpustakaan karena yang mana dari 10 baris kode perlu diubah ...) Saya tahu argumen "cobalah untuk tidak sampai di sana", tetapi bagaimana jika Anda sudah ada di sana? Lebih baik aman daripada menyesal.

2

Setelah penggabungan, mungkin ada perubahan pada file di repo lokal. Perubahan ini tidak secara otomatis dilakukan ke lokal, kecuali jika Anda mengatur "Komit perubahan segera digabung".

Jika Anda tidak menyetel opsi itu, file muncul di SourceTree sebagai perubahan yang tidak dikomit.

Itu karena Git itu sendiri tidak melakukan kecuali Anda secara eksplisit mengatakannya, dan SourceTree adalah GUI Git. The "Komit perubahan digabung segera" pilihan tidak begitu banyak pilihan, karena merupakan jalan pintas perintah.

Jadi, alasan untuk tidak ingin menggunakan fitur ini jelas: Anda ingin melakukan komit secara manual, atau tidak sama sekali.

Katakanlah Anda menarik master ke cabang fitur Anda. Seorang rekan kerja sedang mengerjakan cabang fitur yang berbeda. Rekan kerja ini memiliki sejarah memecahkan banyak hal. Penggabungan berisi perubahan pada kode umum bersama yang dibuat oleh rekan kerja ini. Jadi, Anda - bersama anggota tim lainnya - tidak melakukan perubahan gabungan hingga Anda yakin bahwa tidak ada perubahan yang dibuat oleh rekan kerja ini yang akan memengaruhi pekerjaan Anda.

Hanya karena tidak ada alasan yang bagus - secara teori - untuk tidak menggunakan fitur ini, pada kenyataannya, ada sejumlah alasan bagus. Berkenaan dengan tutorial Anda, saya hanya akan mengatakan bahwa "99 kali dari 100, ini adalah opsi yang ingin Anda gunakan". Saya tidak berpikir Anda benar-benar perlu masuk ke detail tentang tidak menggunakannya, terutama jika yang lain baru untuk kontrol versi. Itu semua tergantung pada seberapa mendalam Anda berniat untuk menjadi tutorial.


2

Jika Anda menggunakan pengait komit pos untuk mendorong komitmen Anda secara otomatis (seperti di /programming//a/7925891/6781678 ), Anda mungkin perlu opsi ini untuk menghindari mendorong komit dengan kualitas yang meragukan.

Saya tidak akan pernah menggunakan keduanya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.