Anda bergabung. Itu sebenarnya cukup sederhana, dan operasi lokal yang sempurna:
git checkout b1
git merge master
# repeat for b2 and b3
Ini meninggalkan sejarah persis seperti yang terjadi: Anda bercabang dari master, Anda membuat perubahan pada semua cabang, dan akhirnya Anda memasukkan perubahan dari master ke ketiga cabang.
git
dapat menangani situasi ini dengan sangat baik, ini dirancang untuk penggabungan yang terjadi di semua arah, pada saat yang sama. Anda dapat mempercayainya untuk dapat menyatukan semua utas dengan benar. Ini sama sekali tidak peduli apakah b1
penggabungan cabang master
, atau master
gabungan b1
, komit gabungan terlihat sama saja dengan git. Satu-satunya perbedaan adalah, cabang mana yang menunjuk komit gabungan ini.
Anda rebase. Orang-orang dengan SVN, atau latar belakang yang serupa merasa ini lebih intuitif. Perintahnya analog dengan kasus gabungan:
git checkout b1
git rebase master
# repeat for b2 and b3
Orang-orang menyukai pendekatan ini karena mempertahankan sejarah linier di semua cabang. Namun, sejarah linier ini bohong, dan Anda harus sadar bahwa itu benar. Pertimbangkan grafik komit ini:
A --- B --- C --- D <-- master
\
\-- E --- F --- G <-- b1
Penggabungan menghasilkan sejarah sebenarnya:
A --- B --- C --- D <-- master
\ \
\-- E --- F --- G +-- H <-- b1
Namun, rebase memberi Anda sejarah ini:
A --- B --- C --- D <-- master
\
\-- E' --- F' --- G' <-- b1
Intinya adalah, bahwa komit E'
, F'
dan G'
tidak pernah benar-benar ada, dan memiliki kemungkinan pernah diuji. Mereka bahkan tidak dapat dikompilasi. Sebenarnya cukup mudah untuk membuat komitmen yang tidak masuk akal melalui rebase, terutama ketika perubahan master
penting untuk pengembangan di b1
.
Konsekuensi dari ini mungkin, bahwa Anda tidak bisa membedakan yang mana dari tiga komit E
, F
dan G
benar-benar memperkenalkan kemunduran, mengurangi nilai git bisect
.
Saya tidak mengatakan bahwa Anda tidak boleh menggunakannya git rebase
. Ini memiliki kegunaannya. Tetapi setiap kali Anda menggunakannya, Anda harus menyadari fakta bahwa Anda berbohong tentang sejarah. Dan Anda setidaknya harus mengkompilasi menguji komitmen baru.