2011-07-28 9 views
72

Jestem w trakcie dużej fuzji i użyłem git mergetool, aby rozwiązać wszystkie konflikty, ale jeszcze się nie zobowiązałem, ponieważ chciałem się upewnić, że scalenie było w porządku pierwszy.Ponów scalenie tylko jednego pliku

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 mergetool na tym pliku. Ponieważ jest to duże połączenie, chciałbym uniknąć ponownego scalania wszystkich innych plików, ponieważ rozumiem, że musiałbym zrobić z git merge --abort.

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

Odpowiedz

108

Wygląda na to, że patrzyłem w niewłaściwym miejscu. Rozwiązanie okazało się dość proste.

git checkout -m <file> 

Powoduje to przywrócenie pliku do stanu konfliktu. Mogę następnie uruchomić git mergetool, aby ponowić scalenie.

+2

Ten rodzaj pracował dla mnie. Indeks znalazł się w stanie scalonym, ale mergetool nie sądził, że nie było żadnych nierozerwalnych połączeń. Właśnie zrobiłem scalenie używając vi, ale i tak było to dziwne. –

0

Zawsze można edytować pliki ręcznie.

Jeśli używasz git merge --no-commit, po prostu przygotujesz zatwierdzenie (po auto i półautomatyczne) scaleniu.

Możesz nadal bezpiecznie edytować pliki i zatwierdzać je tylko wtedy, gdy są całkowicie usatysfakcjonowane.

+0

Miałem nadzieję uniknąć tego, ale dzięki i tak. – hammar

Powiązane problemy