Dans un conflit de fusion git, quels sont les fichiers BACKUP, BASE, LOCAL et REMOTE générés?

122

Je suppose que les fichiers LOCAL et REMOTE sont exactement ce que leur nom suggère, mais à quoi servent BASE et BACKUP?

remplisseur003
la source

Réponses:

166

Git effectue une fusion à trois voies, trouvant l'ancêtre commun (alias "base de fusion") des deux branches que vous fusionnez. Lorsque vous appelez git mergetoolsur un conflit, il produira ces fichiers appropriés pour être alimentés dans un outil de fusion à trois voies typique. Donc:

  • foo.LOCAL: le côté "le nôtre" du conflit - c'est-à-dire votre branche ( HEAD) qui contiendra les résultats de la fusion
  • foo.REMOTE: le côté "le leur" du conflit - la branche dans laquelle vous fusionnez HEAD
  • foo.BASE: l'ancêtre commun. utile pour alimenter un outil de fusion à trois voies
  • foo.BACKUP: le contenu du fichier avant d'appeler l'outil de fusion, sera conservé sur le système de fichiers si mergetool.keepBackup = true.
Edward Thomson
la source
9
Non. LOCALEst la version en HEAD. BACKUPétait la version qui était sur le disque avant que vous ne l'appeliez mergetool. Il contient probablement les marqueurs de conflit diff3 et vous l'avez peut-être modifié avant de l'appeler mergetool.
Edward Thomson
voici un bon article expliquant les cas de fusion, y compris la fusion à trois: git-scm.com/book/en/v2/…
qatz
16
les mots LOCAL / REMOTE sont en quelque sorte trompeurs, me font penser qu'ils font référence à "mes modifications" / "modifications à distance", mais en fait généralement dans le contexte de "fusionner avec le maître", LOCAL est la branche cible qui est la modification des autres, et REMOTE est la branche source qui correspond à mes modifications. :)
TingQian LI
8
Ils sont ... Faites-vous un rebase? Parce que les côtés sont inversés dans un rebase.
Edward Thomson