GIT: rozwiązywanie konfliktów

Konflikty pojawiają się podczas operacji merge i rebase. Nie ma w tym nic złego ;), trzeba sie nauczyć jak szybko je rozwiązywać. Trzeba podpiąć narzędzie, które do tego służy a jest niezależne od gita. Chodzi o mergetool – ja opiszę to na podstawie jednego z dostępnych, ale IMHO najlepszego – KDiff3.

Gdy już KDiff3 został skonfigurowany

SourceTree przy instalacji oferuje zainstalowanie KDiff3 i wtedy poniższe konfiguracje mamy najczęściej z głowy.

Konfiguracja KDiff3 jako mergetool’a

(Ta konfiguracja zadziała niezależnie czy korzystamy z konsoli czy GUI.)
Instalujemy: https://www.google.com/?q=kdiff3+download

Dodajemy wpisy w .gitconfig:

[merge]
    tool = kdiff3
[mergetool "kdiff3"]
    path = c:/Program Files/KDiff3/kdiff3.exe
[diff]
    tool = kdiff3
    guitool = kdiff3
[difftool "kdiff3"]
    path = c:/Program Files/KDiff3/kdiff3.exe

Tyle wystarczy :). W internecie można znaleźć opisy jak to zrobić gdzie po ścieżce do kdiff3.exe występują jeszcze ‚$BASE $LOCAL $REMOTE -o $MERGED’ etc. Mi podstawowa wersja zawsze działała, a wiem, że te rozszerzone parametry kilku osobom nie działały.

Wywołanie KDiff3

Gdy pojawi się konflikt możemy zacząć go rozwiązywać z konsoli poprzez

git mergetool

Można też z GUI. Tutaj przykład dla SourceTree

launch mergetool from source tree

Manualnie rozwiązanie konfliktu

Po odpaleniu powyższych komend zobaczymy coś takiego:

(czasem to trwa kilka sekund, cierpliwości…)

raw conflict in kdiff3

Poprzez kliknięcie Ctrl+1, Ctrl+2, Ctrl+3 możemy podejrzeć co przyniesie nam wybranie określonych linijek:

perspective from different lines in kdiff3

Tak może wyglądać wybranie linijki z „C” a następnie ręczne edytowanie:

resolved in kdiff3

Reklamy
Ten wpis został opublikowany w kategorii git i oznaczony tagami , , , , . Dodaj zakładkę do bezpośredniego odnośnika.

3 odpowiedzi na „GIT: rozwiązywanie konfliktów

  1. paweltymura pisze:

    Fajnie jednak dla .NET nadal dla mnie najlepiej działa VS 2015. Ciekawe jak w tym spisze się project Rider, który teraz testuję.

  2. TeoVincent pisze:

    Jeśli ustawisz KDiff3 tak jak w poście to i tak pracując z VS, chcąc porównać zmiany lub rozwiązać konflikt wystartuje KDiff3, tak jak byś go odpalił z linii komend.

Możliwość komentowania jest wyłączona.