ในความขัดแย้งในการผสานคอมไพล์ไฟล์ BACKUP, BASE, LOCAL และ REMOTE ที่สร้างขึ้นคืออะไร?


122

ฉันคิดว่าไฟล์ LOCAL และ REMOTE เป็นเพียงชื่อที่แนะนำ แต่ BASE และ BACKUP มีไว้เพื่ออะไร

คำตอบ:


166

Git ทำการผสานสามทางโดยค้นหาบรรพบุรุษร่วมกัน (aka "merge base") ของสองสาขาที่คุณกำลังผสาน เมื่อคุณเรียกใช้git mergetoolข้อขัดแย้งไฟล์จะสร้างไฟล์เหล่านี้ที่เหมาะสำหรับป้อนลงในเครื่องมือผสาน 3 ทางทั่วไป ดังนั้น:

  • foo.LOCAL: ด้าน "ของเรา" ของความขัดแย้ง - กล่าวคือสาขาของคุณ (HEAD ) ที่จะมีผลลัพธ์ของการผสาน
  • foo.REMOTE: ด้าน "ของพวกเขา" ของความขัดแย้ง - สาขาที่คุณรวมเข้าด้วยกัน HEAD
  • foo.BASE: บรรพบุรุษร่วมกัน มีประโยชน์สำหรับการป้อนเข้าไปในเครื่องมือผสานสามทาง
  • foo.BACKUP: mergetool.keepBackup = trueเนื้อหาของไฟล์ก่อนที่จะอัญเชิญผสานเครื่องมือที่จะถูกเก็บไว้ในระบบแฟ้มถ้า

9
ไม่ใช่ LOCALคือเวอร์ชันในHEAD. เป็นรุ่นที่อยู่บนดิสก์ก่อนที่คุณเรียกBACKUP mergetoolมันอาจจะมีเครื่องหมาย diff3 mergetoolความขัดแย้งและคุณอาจจะได้แก้ไขก่อนที่จะกล่าวอ้าง
Edward Thomson


นี่คือบทความดีๆที่อธิบายกรณีการรวมรวมทั้งการรวมสามทาง: git-scm.com/book/en/v2/…
qatz

16
คำว่า LOCAL / REMOTE ทำให้เข้าใจผิดอย่างใดทำให้ฉันคิดว่าพวกเขาหมายถึง "การเปลี่ยนแปลงของฉัน" / "การเปลี่ยนแปลงระยะไกล" แต่โดยปกติแล้วในบริบทของ "รวมเป็นหลัก" LOCAL คือสาขาเป้าหมายซึ่งเป็นการแก้ไขอื่น ๆ และ REMOTE เป็นสาขาต้นทางซึ่งเป็นการแก้ไขของฉัน :)
TingQian LI

8
พวกเขาคือ ... คุณกำลังทำ rebase หรือไม่? เนื่องจากด้านข้างจะกลับด้านในฐานใหม่
Edward Thomson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.