Podczas łączenia oddziałów pod kontrolą źródła często występuje problem konfliktu scalania z innymi programistami.
Wiem, że możemy użyć vimdiff do różnicowania zmian kodu w stosunku do kontroli źródła , ale jest też sposób, w jaki możemy użyć vimdiff do pomocy w rozwiązywaniu konfliktów łączenia.
Osobiście bardziej interesuje mnie git, ale dobrze byłoby zrozumieć, czy istnieją wtyczki / techniki dla innych narzędzi / systemów kontroli źródła.
vimdiff
version-control-systems
merge
Martin York
źródło
źródło
feature rich UI
ten wprowadza w błąd; vimdiff może nie mieć przyjemnego interfejsu użytkownika, jest zdecydowanie bogaty w funkcje. Uważam również, że vim jest znacznie bardziej produktywnym środowiskiem niż wszystkie edytory GUI, z których korzystałem (ale używałem go przez długi czas i była to stroma krzywa uczenia się). Bardziej mnie ciekawi, czy Meld robi cokolwiek, czego nie robi vim, co sprawiłoby, że warto było choćby patrzeć.Odpowiedzi:
Zwykle używam git w wierszu poleceń.
Ale kiedy dochodzi do konfliktu scalenia, używam Vima, aby je rozwiązać (osobiście robię to za pomocą wtyczki zbiegającej). Uwaga: zbieg jest dobry dla wielu manipulacji gitami z poziomu Vima. Moją ulubioną funkcją jest trójdrożny konflikt scalania.
git obsługuje to w vimdiff poprzez git scaletool. Zainstalowałem zbieg, ale możesz go skonfigurować ręcznie (Dzięki @Jay Thompson).
Manualna instalacja:
Wynik jest nieco inny niż opisany poniżej (nie korzystałem z tego osobiście). Ale zasada jest taka sama, ale u dołu znajduje się czwarte okno zawierające wynik.
Skonfiguruj za pomocą Fugitive
vim-fugitive to wtyczka git otoki / integracji dla Vima; potrafi wiele rzeczy, a jednym z nich jest rozwiązywanie konfliktów.
Możesz teraz pobrać i przenieść tekst z dwóch pozostałych widoków do widoku centralnego (który będzie zawierał wszystkie poprawki ręczne). Po rozwiązaniu wszystkich konfliktów ręcznie po prostu wyjdź z vimdiff
Chociaż możesz używać
:diffget <view number>
i:diffput <view number>
do ciągnięcia i wypychania rzeczy między widokami. Osobiście nie uważam tego za bardzo przydatne. Cały kod jest już w środkowym widoku. Chciałbym więc edytować ten widok ręcznie, dopóki konflikt nie zostanie rozwiązany. Możliwość oglądania obu wersji kodu po obu stronach okna edytora jest jednak niezwykle przydatna.Również bardzo dobre demo jego użycia tutaj
źródło
git config --global merge.tool vimdiff
a następnie uruchomić,git mergetool
aby uruchomić vima w trybie różnicowym.diff3 -E
. Tak więc powyższe obrazy są generowane z plików, które zawierają te znaczniki.