ไม่ชัดเจนว่าผลลัพธ์ที่คุณต้องการคืออะไรดังนั้นจึงมีความสับสนเกี่ยวกับวิธีการ "แก้ไข" ในคำตอบและความคิดเห็นของพวกเขา ฉันพยายามให้ภาพรวมและดูตัวเลือกสามตัวเลือกต่อไปนี้:
ลองผสานและใช้ B เพื่อหาข้อขัดแย้ง
นี่ไม่ใช่ "รุ่นของพวกเขาสำหรับgit merge -s ours
" แต่ "รุ่นของพวกเขาสำหรับgit merge -X ours
" (ซึ่งสั้นสำหรับgit merge -s recursive -X ours
):
git checkout branchA
# also uses -s recursive implicitly
git merge -X theirs branchB
นี่คือคำตอบของอลันดับเบิลยู. สมิ ธทำ
ใช้เนื้อหาจาก B เท่านั้น
นี้จะสร้างการผสานการกระทำของทั้งสองสาขา แต่เหลือใช้จากการเปลี่ยนแปลงทั้งหมดbranchA
และเพียง branchB
แต่ช่วยให้เนื้อหาจาก
# Get the content you want to keep.
# If you want to keep branchB at the current commit, you can add --detached,
# else it will be advanced to the merge commit in the next step.
git checkout branchB
# Do the merge an keep current (our) content from branchB we just checked out.
git merge -s ours branchA
# Set branchA to current commit and check it out.
git checkout -B branchA
โปรดทราบว่าการผสานกระทำของพ่อแม่เป็นครั้งแรกในขณะนี้คือที่มาจากและมีเพียงสองคือจากbranchB
branchA
นี่คือตัวอย่างคำตอบของ Gandalf458ไม่
ใช้เนื้อหาจาก B เท่านั้นและรักษาลำดับหลักที่ถูกต้อง
นี่คือ "รุ่นสำหรับgit merge -s ours
" ที่แท้จริง มันมีเนื้อหาเช่นเดียวกับในตัวเลือกก่อน (เช่นเดียวที่จากbranchB
) แต่คำสั่งของพ่อแม่ผู้ปกครองที่ถูกต้องคือผู้ปกครองครั้งแรกที่มาจากและครั้งที่สองจากbranchA
branchB
git checkout branchA
# Do a merge commit. The content of this commit does not matter,
# so use a strategy that never fails.
# Note: This advances branchA.
git merge -s ours branchB
# Change working tree and index to desired content.
# --detach ensures branchB will not move when doing the reset in the next step.
git checkout --detach branchB
# Move HEAD to branchA without changing contents of working tree and index.
git reset --soft branchA
# 'attach' HEAD to branchA.
# This ensures branchA will move when doing 'commit --amend'.
git checkout branchA
# Change content of merge commit to current index (i.e. content of branchB).
git commit --amend -C HEAD
นี่คือสิ่งที่คำตอบของ Paul Pladijsทำ (โดยไม่จำเป็นต้องมีสาขาชั่วคราว)