GIT Timpa cabang dengan master


33

Saya memiliki cabang dev lama yang benar-benar ketinggalan zaman. Saya tidak ingin menghapusnya tetapi saya ingin mengganti isinya sepenuhnya dengan cabang utama. Artinya, saya ingin dev_branch = master

Saya mencoba:

git merge -s ours dev_branch

Tidak berhasil meskipun ...

Jawaban:


53

Jika Anda ingin semua perubahan dari masterdalam dev_branch, maka:

git checkout dev_branch
git reset --hard master

Ini hanya berfungsi jika orang lain belum mengkloning repositori.

Jika Anda telah dev_branchmendorong ke kendali jarak jauh, Anda harus melakukan:

git push --force

Untuk mendorong-paksa ke remote. Peringatan: Ini akan mematahkan sejarah cabang untuk orang-orang yang mengkloningnya sebelumnya! Kemudian, orang lain harus melakukan git pull --rebasepada dev_branchuntuk mendapatkan perubahan.


Anda juga dapat mengubah nama cabang dev menjadi sesuatu yang lama dan kemudian membuat cabang baru dari masterdengan nama yang sama:

git branch -m dev_branch old_dev_branch
git branch -m master dev_branch

Atau, gunakan oursstrategi - tidak yakin mengapa itu tidak berhasil untuk Anda:

git checkout master
git merge -s ours dev_branch
git checkout dev_branch
git merge master

Dengan solusi penggantian nama, saya pikir Anda akan menemukan bahwa Anda sekarang tidak dapat mendorong dev_branchke asal (jika ada), dan Anda juga tidak akan lagi memiliki mastercabang secara lokal.
— Aidan

Terima kasih @slhck! Untuk beberapa alasan, cabang panggung saya tidak diperbarui setelah melakukan penggabungan normal. Terus mengatakan bahwa cabang panggung saya sudah mutakhir. Menggunakan strategi "milik kita" memecahkan ini untukku.
— Slick Shinobi

kita hanya akan memengaruhi potongan yang berkonflik, tetapi dia ingin sepenuhnya memperbarui cabang, bukan hanya konflik!? (ini setidaknya yang harus saya lakukan dan mengapa saya menemukan Q ini) - Saya akan mengganti nama!
— Martin Meeser
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.