บังคับให้ Git เลือกเวอร์ชันที่ใหม่กว่าเสมอในระหว่างการผสานหรือไม่


103

สมมติว่าฉันmergeคอมไพล์และมีความขัดแย้งในการผสาน

คำถามของฉันคือฉันจะบังคับให้คอมไพล์เลือกโค้ดเวอร์ชันใหม่ที่ขัดแย้งกันได้อย่างไรดังนั้นฉันจึงไม่จำเป็นต้องแก้ไขข้อขัดแย้งด้วยตนเอง



แต่ฉันต้องการทำการรวม (ไม่ลบล้างการคอมมิต) แต่เพื่อแก้ไขความขัดแย้งโดยอัตโนมัติ
bartek

คำตอบ:


189

มันไม่ได้ว่า "ใหม่" รุ่น แต่คุณสามารถบอกคอมไพล์ไปมักจะชอบรุ่นในสาขาปัจจุบันใช้หรือจะชอบรุ่นของสาขาความเป็นอยู่รวมที่ใช้git merge branch -X oursgit merge branch -X theirs

จากman git-merge:

ของเราเอง:

ตัวเลือกนี้บังคับให้คนที่ขัดแย้งกันได้รับการแก้ไขโดยอัตโนมัติอย่างหมดจดโดยเลือกเวอร์ชันของเรา การเปลี่ยนแปลงจากต้นไม้อีกต้นที่ไม่ขัดแย้งกับฝ่ายเราจะสะท้อนให้เห็นผลการผสาน สำหรับไฟล์ไบนารีเนื้อหาทั้งหมดจะถูกนำมาจากฝั่งของเรา

พวกเขา:

นี่คือสิ่งที่ตรงกันข้ามกับ "ของเรา"


9
ours- theirs!! แค่พูดก็เข้าใจว่าคำสั่งทำอะไร! ฉันรัก Git! : D
Haywire

14
หมายเหตุ: หากคุณใช้แล้วgit merge branchคุณจะต้องทำgit merge --abortก่อนจึงจะทำได้
John Dvorak

1
ไม่ได้ผลสำหรับฉัน มันยังคงยกเลิกการผสาน error: The following untracked working tree files would be overwritten by merge:ฉันไม่รู้ด้วยซ้ำว่าทำไมไฟล์เหล่านี้ถึงอยู่ในสาขานี้ตั้งแต่แรก แต่ควรจะเขียนทับและคอมไพล์ปฏิเสธ
mcv

2
หากไม่มีการติดตามคุณจะต้องลบ (หรือgit add) ออกก่อน อ่านสักหน่อยgit cleanมันอาจช่วยคุณได้
Renato Zannon

หลังจากรันgit merge oursหากมีไฟล์ขัดแย้งจะเป็นบันทึกใด ๆ ? และฉันสามารถติดตามของgit merge ours?
zx1986

20

ฉันใช้สิ่งนี้

git fetch --prune
git reset --hard origin/master

2
โซลูชันนี้ช่วยฉันแก้ไขความขัดแย้งที่ไม่ได้ถูกผสานเมื่อสิ่งที่ฉันต้องการคือการแทนที่ด้วยสาขาหลัก ฉันใช้ git reset - ฮาร์ดมาสเตอร์ (จากท้องถิ่น)
Juan Mendez
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.