In un conflitto di unione git, quali sono i file BACKUP, BASE, LOCAL e REMOTE che vengono generati?


122

Presumo che i file LOCAL e REMOTE siano esattamente ciò che suggerisce il loro nome, ma a cosa servono BASE e BACKUP?

Risposte:


166

Git esegue un'unione a tre vie, trovando l'antenato comune (noto anche come "base di unione") dei due rami che stai unendo. Quando si invoca git mergetoolun conflitto, verranno prodotti questi file adatti per essere inseriti in un tipico strumento di unione a 3 vie. Così:

  • foo.LOCAL: il lato "nostro" del conflitto, cioè il tuo branch ( HEAD) che conterrà i risultati della fusione
  • foo.REMOTE: il "loro" lato del conflitto - il ramo in cui ti stai fondendo HEAD
  • foo.BASE: l'antenato comune. utile per alimentare uno strumento di unione a tre vie
  • foo.BACKUP: il contenuto del file prima di invocare lo strumento di unione, verrà mantenuto nel filesystem se mergetool.keepBackup = true.

9
No. LOCALè la versione in HEAD. BACKUPera la versione che era su disco prima di essere invocata mergetool. Probabilmente contiene i marcatori di conflitto diff3 e potresti averlo modificato prima di invocare mergetool.
Edward Thomson


ecco un buon articolo che spiega l'unione di casi inclusa l'unione a tre vie: git-scm.com/book/en/v2/…
qatz

16
le parole LOCAL / REMOTE sono in qualche modo fuorvianti, mi fanno pensare che si riferiscano ai "miei cambiamenti" / "cambiamenti remoti", ma in realtà di solito nel contesto di "merge into master", LOCAL è il ramo di destinazione che è la modifica di altri, e REMOTE è il ramo sorgente che è le mie modifiche. :)
TingQian LI

8
Stanno ... Stai facendo un rebase? Perché i lati sono invertiti in un rebase.
Edward Thomson
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.