Ponów scalenie tylko jednego pliku


112

Jestem w trakcie dużej fuzji i git mergetoolrozwiązywałem wszystkie konflikty, ale jeszcze się nie zobowiązałem, ponieważ najpierw chciałem się upewnić, że scalenie jest prawidłowe.

Okazuje się, że popełniłem błąd podczas rozwiązywania konfliktów w jednym pliku i chciałbym ponownie rozwiązać konflikt z git mergetoolna tym pliku. Ponieważ jest to duże scalanie, chciałbym uniknąć ponownego łączenia wszystkich innych plików, ponieważ rozumiem, że musiałbym to zrobić git merge --abort.

Wiem, że mógłbym po prostu edytować plik ręcznie, ale byłoby to dość żmudne i znacznie łatwiej byłoby po prostu powtórzyć git mergetooloperację. czy to możliwe?


Odpowiedzi:


181

Wygląda na to, że szukałem po prostu w złym miejscu. Rozwiązanie okazało się dość proste.

git checkout -m <file>

Powoduje to przywrócenie pliku do stanu konfliktu. Mogę wtedy uruchomić git mergetoolponownie scalenie.


2
To zadziałało na mnie. Indeks zakończył się w stanie scalonym, ale łącznik nie sądził, że są jakieś zaległe połączenia. Właśnie dokonałem scalenia za pomocą vi, ale i tak było to dziwne.
Chris Cleeland,

1
Dziękuję Ci! to jest dokładnie to, czego potrzeba. Nawiasem mówiąc, ręczne łączenie z vi jest zawsze przyjemne iw pełni satysfakcjonujące. przesunięcie w lewo lub przesunięcie w prawo nigdy nie dało mi pewności, że scalanie przebiega zgodnie z oczekiwaniami
asgs

1
W odpowiedzi na to zduplikowane pytanie jest kilka przydatnych dodatkowych szczegółów (z tą samą odpowiedzią) .
Joshua Goldberg

-4

Zawsze możesz edytować pliki ręcznie.

Jeśli używasz git merge --no-commit, to po prostu będziesz miał przygotowane zatwierdzenie (po automatycznym i półautomatycznym scaleniu).

Nadal możesz bezpiecznie edytować pliki i zatwierdzać je tylko wtedy, gdy są całkowicie spełnione.

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.