Perbarui cabang lama terhadap master dalam repo Git

123

Saya memiliki repositori Git yang memiliki cabang (lokal dan jarak jauh) yang sudah usang. Saya ingin memperbarui cabang ini dengan cabang utama, tetapi saya tidak tahu bagaimana melakukan ini. Mungkin juga akan ada banyak konflik penggabungan.

Bagaimana cara membawa atau memperbarui cabang kedaluwarsa ini ke keadaan yang sama dengan cabang master?

Andrew
sumber
1
jika Anda datang ke sini untuk mencari tahu cara memperbarui cabang usang terhadap master di repo Git jika Anda belum membuat perubahan apa pun di cabang lokal, cukup lakukan "git pull"
lusuh

Jawaban:

152

Perbarui cabang master, yang perlu Anda lakukan apa pun.

Kemudian, salah satu dari:

  1. Ratakan cabang lama ke cabang master. Selesaikan konflik penggabungan selama rebase, dan hasilnya adalah cabang terbaru yang bergabung dengan rapi melawan master.

  2. Gabungkan cabang Anda menjadi master, dan selesaikan konflik penggabungan.

  3. Gabungkan master ke cabang Anda, dan selesaikan konflik penggabungan. Kemudian, penggabungan dari cabang Anda menjadi master harus bersih.

Tidak ada yang lebih baik dari yang lain, mereka hanya memiliki pola trade-off yang berbeda.

Saya akan menggunakan pendekatan rebase, yang memberikan hasil keseluruhan yang lebih bersih untuk pembaca selanjutnya, menurut pendapat saya, tetapi itu tidak lain adalah selera pribadi.

Untuk melakukan rebase dan mempertahankan cabang Anda akan:

git checkout <branch> && git rebase <target>

Dalam kasus Anda, periksa cabang lama, lalu

git rebase master 

untuk membuatnya dibangun kembali melawan master.

Daniel Pittman
sumber
1
@ Andrew: git rebase:)
CharlesB
1
git checkout $branch && git rebase $target- dalam kasus Anda, periksa cabang lama, lalu git rebase masterbuat ulang terhadap master.
Daniel Pittman
3
Apakah repo Anda bersifat publik? Bolehkah melakukan rebase jika publik?
event_jr
4
Saran yang baik saat menggunakan rebase di cabang jarak jauh: lakukan rebase cabang jarak jauh ini terhadap cabang master hanya jika ada yang tidak mendorong komit di cabang jarak jauh ini.
Dherik
Setelah rebase selesai, Anda perlu mendorong perubahan menggunakan -fopsi. Saat Anda menulis ulang sejarah, dorongan kuat diperlukan.
Opster Elasticsearch Ninja