Jakie są generowane pliki BACKUP, BASE, LOCAL i REMOTE w przypadku konfliktu git merge?


122

Zakładam, że pliki LOCAL i REMOTE są dokładnie tym, co sugeruje ich nazwa, ale do czego służą BASE i BACKUP?

Odpowiedzi:


166

Git wykonuje łączenie trójstronne, znajdując wspólnego przodka (aka „podstawa scalania”) dwóch łączonych gałęzi. Gdy wywołasz git mergetoolkonflikt, utworzy te pliki nadające się do wprowadzenia do typowego narzędzia do scalania 3-kierunkowego. A zatem:

  • foo.LOCAL: „nasza” strona konfliktu - tj. twoja gałąź ( HEAD), która będzie zawierała wyniki scalania
  • foo.REMOTE: „ich” strona konfliktu - gałąź, z którą się łączysz HEAD
  • foo.BASE: wspólny przodek. przydatne do podawania do narzędzia do łączenia trójstronnego
  • foo.BACKUP: zawartość pliku przed wywołaniem narzędzia do scalania zostanie zachowana w systemie plików, jeśli mergetool.keepBackup = true.

9
Nie. LOCALTo wersja w HEAD. BACKUPbyła wersją, która była na dysku przed wywołaniem mergetool. Prawdopodobnie zawiera znaczniki konfliktu diff3 i być może edytowałeś go przed wywołaniem mergetool.
Edward Thomson


tutaj jest dobry artykuł wyjaśniający łączenie przypadków, w tym łączenie trójstronne
qatz

16
słowa LOKALNE / ZDALNE są w jakiś sposób mylące, sprawiają, że myślę, że odnoszą się do „moich zmian” / „zmian zdalnych”, ale w rzeczywistości zwykle w kontekście „scal w nadrzędny”, LOKALNA jest gałęzią docelową, która jest modyfikacją innych, a ZDALNIE to gałąź źródłowa, która jest moimi modyfikacjami. :)
TingQian LI

9
Oni są ... Robisz rebase? Ponieważ boki są odwrócone w rebase.
Edward Thomson,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.