Pada saat saya siap untuk menggabungkan cabang saya kembali menjadi berkembang (penekanan milikku)
Menangani konflik git merge
seringkali lebih sederhana daripada di git rebase
. Di Git gabungan Anda dapat melihat seluruh daftar file yang telah diubah sekaligus. Tidak peduli berapa banyak komitmen yang telah dilakukan oleh rekan kerja lain, Anda harus bergabung satu kali . Dengan alur kerja rebase, Anda mungkin mendapatkan konflik yang sama berulang-ulang dan harus meninjaunya secara manual. Anda bisa memperbaiki komit ke-13 dan merasa seperti Anda tidak bisa melihat cahaya keluar dari terowongan .
Berdasarkan pengalaman saya, ketika saya mencoba untuk menyelesaikan konflik rebase secara naif saya akhirnya kehilangan modifikasi seseorang atau dengan aplikasi yang bahkan tidak dapat dikompilasi. Seringkali saya dan rekan kerja melakukan banyak pekerjaan tetapi menjadi kewalahan oleh kerumitan mengulangi konflik sehingga kami harus membatalkan dan kehilangan pekerjaan kami sebelumnya setelah beberapa rebase dilakukan.
Saya akan menyarankan Anda beberapa teknik tetapi mereka hanya bisa membantu penggabungan menjadi lebih mudah daripada mengotomatiskan tugas.
- File sumber daya / bahasa . Jika Anda memiliki perubahan aditif ke file sumber daya, pastikan Anda selalu memindahkannya ke akhir file sehingga Anda dapat dengan mudah mengingat perubahan Anda terhadap perubahan orang lain . Anda mungkin dapat menyalin & menempelkan perubahan Anda di bagian bawah, atau hanya menghapus penanda konflik
- Melakukan. Tidak. BENAR. Format ulang . Baik Anda maupun rekan pengembang Anda tidak akan melakukan "pemformatan ulang kode besar-besaran" selama pekerjaan sehari-hari. Code reformat menambah jumlah positif palsu yang berlebihan dalam manajemen konflik. Reformat kode dapat dilakukan
- Secara bertahap, mis. Oleh setiap pengembang di setiap komit, segera setelah mereka menggunakan alat otomatis (misalnya Eclipse memiliki opsi untuk memformat ulang pada save, vanilla Visual Studio tidak memilikinya). Benar-benar setiap pengembang harus menggunakan standar format kode yang sama, dikodekan ke dalam format file yang dimakan oleh IDE Anda. Untuk memberi Anda ide, jika 4 spasi atau 2 tab itu tidak masalah, tetapi benar-benar penting jika semua orang menggunakan yang sama.
- Tepat sebelum rilis, oleh pemimpin tim. Jika komit "reformat kode" terjadi ketika orang tidak bekerja di cabang, yaitu sebelum mereka bercabang, segalanya akan menjadi lebih mudah
- Tinjau pemisahan pekerjaan di antara rekan kerja. Ini adalah bagian di mana sebagian besar teknik datang. Seperti yang ditunjukkan oleh jawaban lain, itu adalah bau desain jika beberapa pengembang melakukan tugas yang berbeda harus menyentuh sumber daya yang sama. Anda mungkin harus berdiskusi dengan pemimpin tim Anda tentang bagian mana yang harus dimodifikasi oleh setiap pengembang secara bersamaan.
Saya juga telah melihat beberapa kebiasaan buruk dalam alur kerja Git di tim saya. Seringkali orang terlalu berkomitmen pada cabang mereka. Saya pribadi menyaksikan pengembang menambahkan 10 hingga 20 komit berlabel "fix", masing-masing komit satu atau dua baris. Kebijakan kami adalah bahwa komit diberi label dengan tiket JIRA untuk memberi Anda ide.
@JacobRobbins menyarankan untuk membuat git rebase
tugas harian. Saya ingin mendorong pendekatannya ke depan.
Pertama, gunakan rebase sekali saja untuk mengurangi jumlah komit ke segelintir. Dan rebase hanya ke cabang pengembangan asli , yang merupakan komit dari mana Anda bercabang. Ketika saya mengatakan sedikit, saya bisa berarti 3 atau 4 (misalnya semua ujung depan, semua ujung belakang, semua tambalan basis data) atau angka yang masuk akal secara manusiawi. Setelah Anda mengonsolidasikannya, gunakan fetch
dan kerjakan rebase Anda di cabang hulu. Ini tidak akan menyelamatkan Anda dari konflik kecuali tim Anda meninjau pendekatan mereka sendiri, tetapi akan membuat hidup Anda tidak terlalu menyakitkan.
Jika Anda memiliki pertanyaan tambahan tentang tugas tertentu, jangan ragu untuk mencari dan bertanya di Stackoverflow.
[Sunting] tentang aturan no-reformat dan boy scout. Saya memiliki sedikit format ulang RE untuk menyoroti bahwa apa yang saya maksud adalah tugas memformat dari awal seluruh file sumber, termasuk kode yang tidak tersentuh oleh Anda. Bertentangan dengan untuk selalu memformat kode Anda sendiri, yang merupakan boy-scouty, sejumlah pengembang, termasuk saya, digunakan untuk memformat ulang seluruh file dengan kemampuan IDE. Ketika file itu disentuh oleh orang lain, bahkan jika baris yang terpengaruh tidak diubah dalam konten dan semantiknya, Git akan melihatnya sebagai konflik. Hanya editor yang sangat sadar bahasa yang dapat menyarankan bahwa konflik hanya terkait dengan memformat dan menggabungkan secara otomatis fragmen berformat terbaik. Tapi saya tidak punya bukti alat semacam itu.
Lagi pula, aturan pramuka tidak memerintahkan Anda untuk membersihkan kekacauan orang lain. Hanya milikmu.