Paksa Git untuk selalu memilih versi terbaru selama penggabungan?

103

Mari kita asumsikan I mergegit dan ada konflik gabungan.

Pertanyaan saya adalah: bagaimana saya bisa memaksa git untuk selalu memilih versi kode terbaru yang berkonflik sehingga saya tidak perlu menyelesaikan konflik secara manual?

bartek
sumber
tetapi saya ingin melakukan penggabungan (bukan menimpa komit), tetapi juga untuk menyelesaikan konflik secara otomatis.
bartek

Jawaban:

188

Ini sebenarnya bukan versi yang "lebih baru", tetapi Anda dapat memberi tahu git untuk selalu memilih versi pada cabang saat ini yang menggunakan git merge branch -X ours, atau lebih memilih versi dari cabang yang digabung, menggunakan git merge branch -X theirs.

Dari man git-merge:

milik kita:

Opsi ini memaksa kumpulan yang berkonflik untuk diselesaikan secara otomatis dengan menggunakan versi kami. Perubahan dari pohon lain yang tidak bertentangan dengan pihak kami tercermin pada hasil penggabungan. Untuk file biner, seluruh konten diambil dari pihak kami.

milik mereka:

Ini kebalikan dari "milik kita".

Renato Zannon
sumber
9
ours- theirs!! Katakan saja dan Anda mengerti apa yang dilakukan perintah itu! Saya suka Git! : D
Haywire
14
Catatan: jika Anda sudah pernah menggunakannya git merge branch, Anda harus melakukannya git merge --abortsebelum Anda dapat melakukan ini.
John Dvorak
1
Tidak berhasil untuk saya. Itu masih membatalkan penggabungan. error: The following untracked working tree files would be overwritten by merge:Saya bahkan tidak tahu mengapa file-file ini ada di cabang ini di tempat pertama, tetapi mereka harus ditimpa, dan git menolak.
mcv
2
Jika tidak terlacak, Anda harus menghapus (atau git add) mereka terlebih dahulu. Baca sedikit tentang git clean, ini dapat membantu Anda dengan itu.
Renato Zannon
Setelah dijalankan git merge ours, jika ada beberapa file konflik, apakah akan ada log? dan dapatkah saya melacak dari git merge ours?
zx1986
19

Saya menggunakan ini,

git fetch --prune
git reset --hard origin/master
wolfgang
sumber
2
Solusi ini membantu saya memperbaiki konflik yang tidak tergabung ketika yang saya inginkan hanyalah menimpa dengan cabang master. saya menggunakan git reset --hard master (dari lokal)
Juan Mendez