Saya telah mengembangkan fitur baru di cabang baru, dan di samping telah melakukan beberapa perubahan pada cabang utama saya.
Apakah mungkin untuk menggabungkan cabang master ke cabang baru saya agar tetap mutakhir sehingga saya tidak akan memiliki terlalu banyak menggabungkan konflik setelah fitur baru selesai?
git
version-control
merge
branch
mnml
sumber
sumber
Jawaban:
Anda dapat
git merge master
ataugit rebase master
, dalam hal ini saya lebih suka git rebase .Karena
git rebase
membuatnya seolah-olah perubahan pada cabang fitur dibuat di atas perubahan pada cabang master, yang membuat grafik versi lebih sederhana.Rebase
Mengambil contoh dari manual git rebase ,
git rebase master
di cabangfeature
:Namun,
git rebase
hanya cocok ketika cabang belum didistribusikan, atau akan ada kebingungan dan kerja ekstra di hilir, karena yang lama melakukan A, B, C sekarang digantikan oleh komit baru A ', B', C ', ditambah F dan G yang tidak ada di sana sebelumnya.Hasil sebenarnya setelah
git rebase master
di cabangfeature
adalah ini:Komit A, B, C menggantung setelah rebase, tetapi dapat dicapai melalui
git reflog feature
.Menggabungkan
Jika seseorang telah menarik cabang Anda, atau Anda mendorongnya ke suatu tempat, Anda harus menggabungkannya, untuk menghindari kebingungan dan kerja ekstra di ujung yang lain. Lihat Memulihkan dari rebase hulu .
Ini adalah hasil dari
git merge master
di cabangfeature
:Atau, jika Anda
git merge feature
di cabangmaster
, akan terlihat seperti ini:sumber
git rebase master
, dan itu akan "rebase" perubahan di cabang fitur sehingga mereka "berdasarkan" pada perubahan di cabang master. Jika perubahan dalam cabang utama bertentangan dengan perubahan di cabang fitur, git akan meminta Anda untuk menyelesaikannya dan melanjutkan, melewati, atau membatalkan. Jika Anda merasa tidak yakin, Anda dapat checkout cabang uji untuk mencobanyagit checkout -b test-feature feature
( dengan asumsi cabang fitur Anda bernama "fitur").git rebase
hanya boleh digunakan jika cabang belum didistribusikan, yang saya anggap kasusnya karena Anda mengatakan itu adalah cabang baru, maaf tentang itu. Lihat Memulihkan dari rebase hulu di dokumen yang saya tautkan. Anda harus menggunakannyagit merge
sebagai gantinya. Dan Anda dapat menggunakangit reflog
untuk menemukan kepala cabang fitur Anda sebelumnya jika Anda ingin mendapatkannya kembali.