Dalam konflik git merge, apa saja file BACKUP, BASE, LOCAL, dan REMOTE yang dibuat?

122

Saya berasumsi file LOKAL dan REMOTE hanya seperti namanya, tapi untuk apa BASE dan BACKUP?

filler003
sumber

Jawaban:

166

Git melakukan penggabungan tiga arah, menemukan leluhur yang sama (alias "basis penggabungan") dari dua cabang yang Anda gabungkan. Saat Anda menjalankan git mergetoolkonflik, ini akan menghasilkan file-file ini yang cocok untuk dimasukkan ke dalam alat penggabung 3-arah yang khas. Jadi:

  • foo.LOCAL: sisi konflik "milik kami" - yaitu, cabang Anda ( HEAD) yang akan berisi hasil penggabungan
  • foo.REMOTE: sisi konflik "mereka" - cabang tempat Anda bergabung HEAD
  • foo.BASE: nenek moyang yang sama. berguna untuk memasukkan alat penggabung tiga arah
  • foo.BACKUP: konten file sebelum menjalankan alat penggabung, akan disimpan di sistem file if mergetool.keepBackup = true.
Edward Thomson
sumber
9
Tidak. LOCALAdalah versi dalam HEAD. BACKUPadalah versi yang ada di disk sebelum Anda memanggil mergetool. Ini mungkin berisi penanda konflik diff3 dan Anda mungkin telah mengeditnya sebelum memanggil mergetool.
Edward Thomson
berikut adalah artikel bagus yang menjelaskan kasus penggabungan termasuk penggabungan tiga arah: git-scm.com/book/en/v2/…
qatz
16
Kata-kata LOCAL / REMOTE entah bagaimana menyesatkan, membuat saya berpikir bahwa mereka mengacu pada "perubahan saya" / "perubahan jarak jauh", tetapi sebenarnya biasanya dalam konteks "bergabung menjadi master", LOKAL adalah cabang target yang merupakan modifikasi orang lain, dan REMOTE adalah cabang sumber yang merupakan modifikasi saya. :)
TingQian LI
8
Mereka adalah ... Apakah Anda melakukan rebase? Karena sisinya dibalik dalam rebase.
Edward Thomson