Jak skonfigurować Git, aby używał innego narzędzia do porównywania z plikiem .gitconfig?
Mam to w moim .gitconfig:
[diff]
tool = git-chdiff #also tried /bin/git-chdiff
To nie działa; po prostu otwiera zwykłe różnice w linii poleceń. Kiedy robię
export GIT_EXTERNAL_DIFF=git-chdiff
następnie git diff
otworzy zewnętrzne narzędzie porównywania (więc wiem, że skrypt zewnętrznego narzędzia porównywania działa dobrze). Czy coś jest nie tak z moją konfiguracją .gitconfig dla narzędzia porównywania?
Odpowiedzi:
Git oferuje szereg narzędzi difftools wstępnie skonfigurowanych „po wyjęciu z pudełka” (kdiff3, kompare, tkdiff, meld, xxdiff, emerge, vimdiff, gvimdiff, ecmerge, diffuse, opendiff, p4merge i araxis), a także umożliwia określić własne. Aby użyć jednego ze wstępnie skonfigurowanych narzędzi diff (na przykład „vimdiff”), dodaj następujące wiersze do
~/.gitconfig
:Teraz będziesz mógł uruchomić „git difftool” i użyć wybranego narzędzia.
Z drugiej strony, określenie własnego narzędzia difftool wymaga trochę więcej pracy, zobacz Jak wyświetlić wyjście „git diff” za pomocą mojego preferowanego narzędzia / przeglądarki porównywania?
źródło
.com
na.org
. Mogę przeglądać jeetworks.org/softwareDodatkowy sposób na zrobienie tego (z linii poleceń):
Pierwsze dwie linie ustawią difftool i connectetool na
tkdiff
- zmień to zgodnie z własnymi preferencjami. Trzecia linia wyłącza irytujący znak zachęty, więc po każdymgit difftool
naciśnięciu automatycznie uruchomi difftool.źródło
git config --global diff.tool diffmerge
ale kiedygit diff myfile.txt
to zrobiłem , nadal dało mi to domyślną różnicę unixowąInni odpowiedzieli na to w 99%, ale jeden krok został pominięty. (Moja odpowiedź będzie pochodzić z OS X, więc będziesz musiał odpowiednio zmienić ścieżki plików).
Wprowadzasz te zmiany w
~/.gitconfig
:To naprawi narzędzie porównywania. Możesz to również naprawić bez edycji
~/.gitconfig
bezpośrednio, wprowadzając następujące polecenia z terminala:1%, o którym wszyscy nie wspomnieli, to taki, którego nie można po prostu uruchomić
git diff myfile.txt
; musisz biecgit difftool myfile.txt
.źródło
git config --global --add difftool.prompt false
, chociaż brakuje Ci kroku . ;)Oto część mojego ~ / .gitconfig, w której konfiguruję narzędzia porównywania i scalania. Lubię diffmerge od SourceGear. (Właściwie to bardzo mi się podoba).
Więc widzisz, definiujesz w linii narzędzie o nazwie „diffmerge”
[difftool "diffmerge"]
. Następnie ustawiam narzędzie „diffmerge” jako domyślne w[diff] tool =
sekcji.Oczywiście na mojej ścieżce pojawia się polecenie „diffmerge”. W przeciwnym razie musiałbym podać pełną ścieżkę do pliku wykonywalnego.
źródło
diffmerge --merge --result="$MERGED" "$LOCAL" "$(if test -f "$BASE"; then echo "$BASE"; else echo "$LOCAL"; fi)" "$REMOTE"
diffmerge --merge --result="$MERGED" "$LOCAL" "$BASE" "$REMOTE"
ln-s <pathtodiffmerge>/sgdm_cygwin.sh /usr/local/bin/diffmerge
i jesteś gotowy do użycia powyższej konfiguracji. Jak równieżdiffmerge
bezpośrednio z wiersza poleceń cygwin ze ścieżkami cygwin.sgdm.exe
terazReprodukuję moją odpowiedź z tego wątku, która była bardziej specyficzna dla ustawienia nieporównywalnego jako narzędzia porównywania dla Git. Wszystkie szczegóły, które udostępniłem, są równie przydatne dla każdego narzędzia porównywania w ogóle, więc udostępnij je tutaj:
Pierwsze polecenie, które uruchamiamy, jest następujące:
Powyższe polecenie tworzy poniższy wpis w
.gitconfig
znalezionym w%userprofile%
katalogu:Następnie uruchamiasz poniższe polecenie (uruchomienie tego polecenia jest w tym konkretnym przypadku zbędne i jest wymagane tylko w niektórych wyspecjalizowanych przypadkach. Dowiesz się o tym za chwilę ):
Powyższe polecenie tworzy poniższy wpis w
.gitconfig
pliku:Najważniejsze jest to, aby wiedzieć
bc3
. Jest to dobrze znany klucz do gita odpowiadający konkretnej wersji dobrze znanych narzędzi porównawczych dostępnych na rynku (bc3
odpowiada trzeciej wersji narzędzia Beyond Compare). Jeśli chcesz zobaczyć wszystkie predefiniowane klawisze, po prostu uruchomgit difftool --tool-help
polecenie na git bash. Wraca poniższa lista:Możesz użyć dowolnego z powyższych kluczy lub zdefiniować własny klucz niestandardowy. Jeśli chcesz skonfigurować nowe narzędzie (lub nowo wydaną wersję dobrze znanego narzędzia), które nie jest mapowane na żaden z wymienionych powyżej kluczy, możesz go zmapować na dowolny z kluczy wymienionych powyżej lub na nowy własny klucz.
Co jeśli musisz skonfigurować narzędzie porównawcze, które jest
LUB
Podobnie jak w moim przypadku, zainstalowałem nieporównywalne 4. Poza porównaniem jest dobrze znanym narzędziem git, ale jego wersja 4 nie jest domyślnie mapowana do żadnego z istniejących kluczy. Możesz więc zastosować dowolne z poniższych podejść:
Mogę zmapować narzędzie poza porównywarką 4 do już istniejącego klucza,
bc3
który odpowiada wersji nieporównywalnej 3. Nie miałem innej wersji 3 na moim komputerze, więc nie obchodziło mnie to. Gdybym chciał, mógłbym zmapować go do dowolnego z predefiniowanych kluczy z powyższej listy również npexamdiff
.Jeśli mapujesz dobrze znaną wersję narzędzi do odpowiedniego już istniejącego / dobrze znanego klucza, nie musisz uruchamiać drugiego polecenia, ponieważ ich ścieżka instalacji jest już znana gitowi .
Na przykład gdybym zainstalował na moim komputerze wersję inną niż wersja 3, posiadanie poniższej konfiguracji w moim
.gitconfig
pliku byłoby wystarczające, aby zacząć:Ale jeśli chcesz zmienić domyślne powiązane narzędzie, w końcu wymieniasz
path
atrybut osobno, aby git poznał ścieżkę, z której ma zostać uruchomiony plik exe nowego narzędzia. Oto wpis, który foxes git ma zamiast tego uruchomić poza porównaniem 4. Zwróć uwagę na ścieżkę exe:Najczystszym podejściem jest zdefiniowanie nowego klucza dla nowego narzędzia porównawczego lub nowej wersji dobrze znanego narzędzia. Tak jak w moim przypadku zdefiniowałem nowy klucz
bc4
, aby był łatwy do zapamiętania. W takim przypadku musisz uruchomić w sumie dwa polecenia, ale drugie polecenie nie będzie ustawiać ścieżki do pliku wykonywalnego twojego nowego narzędzia. Zamiast tego musisz ustawićcmd
atrybut dla swojego nowego narzędzia, jak pokazano poniżej:Uruchomienie powyższych poleceń tworzy poniższe wpisy w twoim
.gitconfig
pliku:Zdecydowanie polecam zastosować podejście nr 2, aby uniknąć zamieszania w przyszłości.
źródło
Dodanie jednego z poniższych bloków pomaga mi używać KDiff3 w moich środowiskach programistycznych Windows i Linux. Tworzy to ładne, spójne narzędzie do porównywania i scalania między platformami.
Linux
Windows
źródło
trustExitCode = false
że spowoduje to, że git zapyta Cię, czy scalenie się powiodło, zamiast polegać na tym, czy narzędzie zakończyło działanie ze statusem prawda czy fałsz.Jeśli chcesz mieć możliwość korzystania z wielu narzędzi porównywania, dodaj alias do .gitconfig
źródło
--tool
opcji. DziękiZobacz porady i wskazówki Microsoft vscode . Po prostu uruchom te polecenia w swoim terminalu:
git config --global merge.tool code
Ale najpierw musisz dodać
code
polecenie do swojej PATH.źródło
W systemie Windows musimy uruchomić
$git difftool --tool-help
polecenie, aby zobaczyć różne opcje, takie jak:i możemy dodać dowolne z nich (na przykład winmerge) jak
Aby skonfigurować notepad ++, aby zobaczyć pliki przed zatwierdzeniem:
a użycie
$ git commit
otworzy informację o zatwierdzeniu w notatniku ++źródło