Em um conflito de mesclagem do git, quais são os arquivos BACKUP, BASE, LOCAL e REMOTE que são gerados?

122

Presumo que os arquivos LOCAL e REMOTE sejam exatamente o que o nome sugere, mas para que servem o BASE e o BACKUP?

filler003
fonte

Respostas:

166

O Git executa uma mesclagem de três vias, localizando o ancestral comum (também conhecido como "base de mesclagem") dos dois ramos que você está mesclando. Quando você invoca git mergetoolum conflito, ele produz esses arquivos adequados para alimentar uma ferramenta de mesclagem comum de três vias. Portanto:

  • foo.LOCAL: o lado "nosso" do conflito - ou seja, seu ramo ( HEAD) que conterá os resultados da mesclagem
  • foo.REMOTE: o lado "deles" do conflito - o ramo em que você está se fundindo HEAD
  • foo.BASE: o ancestral comum. útil para alimentar uma ferramenta de mesclagem de três vias
  • foo.BACKUP: o conteúdo do arquivo antes de chamar a ferramenta de mesclagem será mantido no sistema de arquivos if mergetool.keepBackup = true.
Edward Thomson
fonte
9
No. LOCALé a versão em HEAD. BACKUPera a versão que estava no disco antes de você invocar mergetool. Provavelmente contém os marcadores de conflito diff3 e você pode ter editado antes de chamar mergetool.
Edward Thomson
aqui está um bom artigo explicando casos fusão incluindo três vias fusão: git-scm.com/book/en/v2/...
qatz
16
as palavras LOCAL / REMOTE são enganosas, me fazem pensar que estão se referindo a "minhas alterações" / "alterações remotas", mas na verdade geralmente no contexto de "mesclar no mestre", LOCAL é o ramo de destino que é a modificação de outros e REMOTE é o ramo de origem que são minhas modificações. :)
TingQian LI
8
Eles estão ... Você está fazendo uma nova recuperação? Porque os lados são revertidos em uma rebase.
Edward Thomson