Jak sprawdzić nasze / swoje w pliku w Magit?

16

Powiedzmy, że mam konflikt scalania. Widzę taki plik będący w konflikcie:

Unstaged changes:
    Unmerged   Foo/bar/wibble/plop/elbow.txt

Mogę kliknąć tutaj, aby otworzyć zmiany i być może przeskoczyć do punktu w pliku, aby naprawić ręcznie, ale jeśli jest to duży plik z wieloma konfliktami, może to być czasochłonne.

Jak mogę poprosić git za pomocą magit, aby wyewidencjonował naszą lub ich wersję pliku, aby rozwiązać konflikt? Mogę skopiować ścieżkę, a następnie użyć, Shift-:aby wprowadzić niestandardowe polecenie git, ale wydaje się, że musi to być skrót klawiaturowy. Nie widzę niczego oczywistego w menu magit lub ?wyskakującym okienku .

tenpn
źródło
3
Chociaż nie odpowiada to bezpośrednio na twoje pytanie, ale może być przydatne. Przenieś punkt do pliku konfliktu magit-statusi naciśnij, eaby rozpocząć łączenie 3-kierunkowe ediff. Inną alternatywą jest to, że w buforze konfliktu możesz włączyć smerge-modepodświetlanie konfliktu i wykonywać interaktywne scalanie bezpośrednio w buforze (nie ediff). Powiązanie klucza prefiksu dla smerge-modepowiązanych poleceń to C-c ^; możesz nacisnąć, C-c ^ C-haby wyświetlić wszystkie przypisania klawiszy.
Tu Do
Nie znalazłem też „naszego” ani „ich” w dokumencie. magit.github.io/master/magit.html#Pushing-and-Pulling
Ehvince
1
Wygląda na dobre pytanie, aby otworzyć żądanie funkcji?
Ehvince
1
dobry pomysł @Ehvince, zrobione: github.com/magit/magit/issues/1643
tenpn
1
Oooh: w następnej wersji magit możesz kskonfliktować się i wybrać, którą wersję zachować. Brzmi świetnie! github.com/magit/magit/issues/1643
tenpn

Odpowiedzi:

16

Nie jestem pewien, kiedy ta funkcja została dodana, ale robi to doskonale:

  1. Połącz jedną gałąź w drugą i napotkaj konflikt
  2. W buforze MAGIT, będzie sekcje Merging master, a Unstaged changes, Staged changes. Konflikt pliku znajduje się wUnstaged changes
  3. W linii z plikiem będącym w konflikcie naciśnij przycisk, kaby odrzucić zmiany (tzn. Zmiany będące w konflikcie)
  4. W minibuforze zobaczysz odpowiedź:

For <conflicted file> checkout: [o]ur stage, [t]heir stage, [c]onflict, or [C-g] to abort

Chata 8
źródło
5

Istnieje kilka rozwiązań:

  • użyj smerge-ediff. W pliku z konfliktem uruchamiasz M-x smerge-ediff. Nastąpi przejście do trybu rozwiązywania Ediff z czterema otwartymi buforami: twoją, ich, scalaniem i buforem poleceń. W buforze poleceń używasz ni, paby przejść do następnego lub poprzedniego przystawki, „a” lub „b”, aby zaakceptować zmianę z pierwszego lub drugiego bufora, lub możesz przejść do bufora scalania i edytować go według własnych upodobań.
  • użyj ediff z magit, ena stabilnej wersji magit, lub M-elub M-m( magit-ediff-resolve) w następnej gałęzi magit, a wtedy znajdziesz się głównie jak w pierwszym przypadku
  • istnieje również smerge-mode, C-c ^ ni C-c ^ ppomogą Ci przejść od przystojniaka do poprzedniego lub następnego, można następnie edytować je lub wykorzystanie C-c ^ ozachować „inne” wersję, C-c ^ maby utrzymać „mine” wersję, C-c ^ baby zachować stary wersja i C-c ^ azachować je wszystkie.
  • możesz użyć magit-find-file, aby otworzyć plik tak, jak był w pewnym zatwierdzeniu.
Rémi
źródło
Nie widziałem, że Tu Do ma już większość odpowiedzi, które tu zamieszczam. Sory
Rémi
Dzięki za wyczerpującą listę, ale odpowiedź na pytanie „czy istnieje zwięzły sposób na uzyskanie wersji Ours or Thiers” brzmi „nie”. :(
tenpn