ฉันสงสัยว่าคุณสับสนที่นี่เพราะมันสับสนพื้นฐาน เพื่อทำให้สิ่งเลวร้ายลงสิ่งต่าง ๆ ทั้งหมดของเรา / ของพวกเขาเปลี่ยนบทบาท (กลายเป็นถอยหลัง) เมื่อคุณทำการ rebase
ในที่สุดในระหว่างที่git merge
สาขา "ของเรา" อ้างถึงสาขาที่คุณกำลังรวมอยู่ :
git checkout merge-into-ours
และสาขา "พวกเขา" หมายถึงสาขา (เดี่ยว) ที่คุณกำลังรวม:
git merge from-theirs
และนี่คือ "เรา" และ "พวกเขา" ทำให้ความรู้สึกบางอย่างแม้ว่า "พวกเขา" อาจจะเป็นของคุณอยู่แล้ว "พวกเขา" ไม่ได้เป็นคนที่คุณอยู่ในgit merge
เมื่อคุณวิ่ง
ในขณะที่ใช้ชื่อสาขาที่แท้จริงอาจจะดูดี แต่มันก็แยกออกเป็นกรณี ๆ ที่ซับซ้อน ตัวอย่างเช่นแทนที่จะเป็นข้างต้นคุณอาจทำ:
git checkout ours
git merge 1234567
ตำแหน่งที่คุณรวมเข้าด้วย raw commit-ID ที่เลวร้ายยิ่งคุณสามารถทำได้:
git checkout 7777777 # detach HEAD
git merge 1234567 # do a test merge
ในกรณีที่ไม่มีชื่อสาขาเกี่ยวข้อง!
ฉันคิดว่ามันช่วยได้เล็กน้อยที่นี่ แต่ในความเป็นจริงแล้วในgitrevisions
ไวยากรณ์คุณสามารถอ้างถึงแต่ละเส้นทางในดัชนีด้วยตัวเลขระหว่างการผสานที่ขัดแย้งกัน
git show :1:README
git show :2:README
git show :3:README
สเตจ # 1 เป็นบรรพบุรุษของไฟล์ทั่วไปสเตจ # 2 เป็นเวอร์ชันสาขาเป้าหมายและสเตจ # 3 เป็นเวอร์ชันที่คุณกำลังผสาน
เหตุผลที่ความคิด "ของเรา" และ "ของพวกเขา" เปลี่ยนไปในระหว่างrebase
นั้นคือการที่การคืนเงินทำงานโดยการทำชุดของเชอร์รี่ - หยิบเข้าไปในสาขาที่ไม่ระบุชื่อ (โหมด HEAD เดี่ยว) สาขาเป้าหมายเป็นสาขาที่ไม่ระบุชื่อและสาขาที่ผสานจากสาขาเป็นสาขาเดิมของคุณ (pre-rebase) ดังนั้น "- สี่" จึงหมายถึงการไม่ระบุชื่อหนึ่งครั้งกำลังสร้างขณะที่ "- พวก" หมายถึง "สาขาของเรากำลังถูกปฏิเสธ" .
สำหรับรายการ gitattributes: มันอาจมีผลกระทบ: "ของเรา" จริงๆหมายถึง "ใช้เวที # 2" ภายใน แต่ตามที่คุณทราบมันไม่ได้เกิดขึ้นจริงในเวลาดังนั้นจึงไม่ควรมีผลกระทบที่นี่ ... ดีไม่เว้นแต่คุณจะคัดลอกลงในแผนผังการทำงานก่อนที่จะเริ่ม
นอกจากนี้โดยวิธีการนี้ใช้กับการใช้งานทั้งหมดของเราและของพวกเขา แต่บางคนอยู่ในระดับไฟล์ทั้งหมด ( -s ours
สำหรับกลยุทธ์การผสาน; git checkout --ours
ระหว่างความขัดแย้งผสาน) และบางส่วนอยู่บนพื้นฐานทีละชิ้น ( -X ours
หรือ-X theirs
ระหว่าง-s recursive
ผสาน). ซึ่งอาจไม่ช่วยอะไรสับสนได้
ฉันไม่เคยคิดชื่อที่ดีกว่านี้มาก่อน และ: ดูคำตอบของ VonC สำหรับคำถามอื่นที่git mergetool
แนะนำชื่อเหล่านี้เพิ่มเติมโดยเรียกพวกเขาว่า "local" และ "remote"!