Git: Memperbaiki bug yang mempengaruhi dua cabang

16

Saya mendasarkan repo Git saya pada model percabangan Git yang sukses dan bertanya-tanya apa yang terjadi jika Anda memiliki situasi ini:

masukkan deskripsi gambar di sini

Katakanlah saya sedang mengembangkan pada dua cabang fitur A dan B, dan B membutuhkan kode dari A. Node X memperkenalkan kesalahan pada fitur A yang mempengaruhi cabang B, tetapi ini tidak terdeteksi pada node Y di mana fitur A dan B digabung dan pengujian dilakukan sebelum bercabang lagi dan mengerjakan iterasi berikutnya.

Akibatnya, bug ditemukan di node Z oleh orang-orang yang bekerja pada fitur B. Pada tahap ini diputuskan bahwa perbaikan bug diperlukan. Perbaikan ini harus diterapkan pada kedua fitur, karena orang yang bekerja pada fitur A juga perlu bug diperbaiki, karena itu bagian dari fitur mereka.

Haruskah cabang perbaikan bug dibuat dari fitur A node terbaru (yang bercabang dari node Y) dan kemudian digabungkan dengan fitur A? Setelah itu kedua fitur digabung menjadi pengembangan lagi dan diuji sebelum bercabang?

Masalahnya adalah ini membutuhkan kedua cabang untuk bergabung untuk memperbaiki masalah. Karena fitur B tidak menyentuh kode pada fitur A, apakah ada cara untuk mengubah histori pada simpul Y dengan menerapkan perbaikan dan masih memungkinkan cabang fitur B tetap tak tergabung namun memiliki kode tetap dari fitur A?

Terkait ringan: Konvensi percabangan bug Git

Aram Kocharyan
sumber
6
Tidak bisakah Anda memperbaiki bug di cabang 'berkembang' dan kemudian menggabungkannya ke dalam fitur A dan fitur B?
tdammers
Hmm, sepertinya itu yang terbaik. Mungkin ada menggabungkan konflik di fitur A tapi saya pikir itu tidak bisa dihindari di sini.
Aram Kocharyan
Jika Anda belum melakukan pengembangan lebih lanjut pada cabang 'pengembangan', dan perbaikan bug tidak tumpang tindih dengan perubahan pada cabang 'fitur A', maka Anda tidak akan mendapatkan konflik.
tdammers

Jawaban:

24

Gunakan komit yang berbeda untuk memperbaiki bug di satu cabang, lalu pilih ceri yang komit ke cabang lain.

Christian Palmstierna
sumber
Itu bekerja dengan baik, tepuk tangan.
Aram Kocharyan
5

Bisa dibilang, tidak ada bug di A atau X. Perbaiki bug di cabang B di mana ia ditemukan. Perbaikan akan menyebar ke X dan A dalam kegiatan normal.

kevin cline
sumber
Terima kasih, itu juga layak selama bug tidak memengaruhi fitur A.
Aram Kocharyan
0

Meskipun bukan alur kerja yang populer git, alur kerja yang populer di Mercurial adalah memperbarui ke revisi X, memperbaiki bug di sana (sebagai X2 ) dan kemudian mengulangi penggabungan Y(yang seharusnya merupakan gabungan dari Mercurial).

Bahkan, alur kerja ini lebih mudah gitkarena setelah semua orang beralih dari Yke Y2 maka referensi ke aslinya Yakan hilang dan pada akhirnya akan menjadi sampah yang dikumpulkan. Di dalam hgAnda harus menghapus komitmen tersebut secara manual untuk merapikan repositori Anda.

Mark Booth
sumber