Szukaj…


Składnia

  • git diff [options] [<commit>] [--] [<path>…​]
  • git diff [options] --cached [<commit>] [--] [<path>…​]
  • git diff [options] <commit> <commit> [--] [<path>…​]
  • git diff [options] <blob> <blob>
  • git diff [options] [--no-index] [--] <path> <path>

Parametry

Parametr Detale
-p, -u, --patch Wygeneruj łatkę
-s, --no-patch Pomiń wyjście różnicowe. Przydatne dla poleceń takich jak git show które domyślnie pokazują łatkę lub do anulowania efektu --patch
--surowy Wygeneruj różnicę w surowym formacie
--diff-algorytm = Wybierz algorytm różnicowy. Dostępne są następujące warianty: myers , minimal , patience , histogram
--streszczenie Wyprowadza skrócone podsumowanie informacji o rozszerzonych nagłówkach, takich jak kreacje, nazwy i zmiany trybu
- tylko nazwa Pokaż tylko nazwy zmienionych plików
- status-nazwa Pokaż nazwy i statusy zmienionych plików Najpopularniejsze statusy to M (zmodyfikowane), A (dodane) i D (usunięte)
--czek Ostrzegaj, jeśli zmiany wprowadzają znaczniki konfliktu lub błędy białych znaków. Błędy, które są uważane za spacje, są kontrolowane przez konfigurację core.whitespace . Domyślnie końcowe znaki spacji (w tym wiersze składające się wyłącznie z białych znaków) i spacja, po której bezpośrednio następuje znak tabulacji wewnątrz początkowego wcięcia linii, są uważane za błędy białych znaków. Wychodzi ze stanem niezerowym, jeśli wystąpią problemy. Nie jest kompatybilny z --exit-code
- pełny indeks Zamiast pierwszej garstki znaków wyświetlaj pełne nazwy obiektów obiektów blob przed i po obrazie w wierszu „indeksu” podczas generowania wyjścia formatu poprawki
--dwójkowy Oprócz --full-index , --full-index binarny plik różnic, który można zastosować za pomocą git apply --full-index
-tekst Traktuj wszystkie pliki jako tekst.
--kolor Ustaw tryb koloru; tzn. użyj --color=always jeśli chcesz --color=always na mniej i zachować kolor gita

Pokaż różnice w działającej gałęzi

git diff

Spowoduje to wyświetlenie nieustawionych zmian w bieżącej gałęzi z zatwierdzenia przed nią. Pokazane zostaną tylko zmiany w stosunku do indeksu, co oznacza, że pokazuje, co można dodać do następnej popełnić, ale nie mają. Aby dodać (wprowadzić) zmiany, możesz użyć git add .

Jeśli plik jest przemieszczany, ale został zmodyfikowany po przemieszczeniu, git diff pokaże różnice między bieżącym plikiem a wersją przemieszczaną.

Pokaż różnice dla plików przemieszczanych

git diff --staged

Spowoduje to wyświetlenie zmian między poprzednim zatwierdzeniem a aktualnie przemieszczanymi plikami.

UWAGA: Możesz również użyć następujących poleceń, aby osiągnąć to samo:

git diff --cached

Który jest tylko synonimem --staged lub

git status -v

Co spowoduje uruchomienie szczegółowych ustawień polecenia status .

Pokaż zmiany zarówno etapowe, jak i niestacjonarne

Aby wyświetlić wszystkie zmiany etapowe i niestacjonarne, użyj:

git diff HEAD

UWAGA: Możesz także użyć następującego polecenia:

git status -vv

Różnica polega na tym, że wynik tego ostatniego powie ci, które zmiany są wprowadzane dla zatwierdzenia, a które nie.

Pokaż zmiany między dwoma zatwierdzeniami

git diff 1234abc..6789def    # old   new

Np .: Pokaż zmiany dokonane w ostatnich 3 zatwierdzeniach:

git diff @~3..@    # HEAD -3   HEAD

Uwaga: dwie kropki (..) są opcjonalne, ale dodają przejrzystości.

To pokaże różnicę tekstową między zatwierdzeniami, niezależnie od tego, gdzie znajdują się w drzewie.

Używanie meldu, aby zobaczyć wszystkie modyfikacje w katalogu roboczym

git difftool -t meld --dir-diff

pokaże zmiany katalogu roboczego. Alternatywnie,

git difftool -t meld --dir-diff  [COMMIT_A] [COMMIT_B]

pokaże różnice między 2 konkretnymi zatwierdzeniami.

Pokaż różnice dla określonego pliku lub katalogu

git diff myfile.txt

Pokazuje zmiany między poprzednim zatwierdzeniem określonego pliku ( myfile.txt ) a wersją zmodyfikowaną lokalnie, która nie została jeszcze przemieszczona.

Działa to również w przypadku katalogów:

git diff documentation

Powyższe pokazuje zmiany między poprzednim zatwierdzeniem wszystkich plików w określonym katalogu ( documentation/ ) a lokalnie zmodyfikowanymi wersjami tych plików, które nie zostały jeszcze ustawione.

Aby pokazać różnicę między pewną wersją pliku w danym zatwierdzeniu a lokalną wersją HEAD , możesz określić zatwierdzenie, z którym chcesz porównać:

git diff 27fa75e myfile.txt

Lub jeśli chcesz zobaczyć wersję między dwoma osobnymi zatwierdzeniami:

git diff 27fa75e ada9b57 myfile.txt

Aby pokazać różnicę między wersją określoną przez skrót ada9b57 a najnowszym zatwierdzeniem w gałęzi my_branchname tylko dla katalogu względnego o nazwie my_changed_directory/ możesz to zrobić:

git diff ada9b57 my_branchname my_changed_directory/

Wyświetlanie różnicy słów dla długich linii

git diff [HEAD|--staged...] --word-diff

Zamiast wyświetlać zmienione linie, będą wyświetlać różnice w liniach. Na przykład zamiast:

-Hello world
+Hello world!

Tam, gdzie cała linia jest oznaczona jako zmieniona, word-diff zmienia dane wyjściowe na:

Hello [-world-]{+world!+}

Możesz pominąć znaczniki [- , -] , {+ , +} , określając --word-diff=color lub --color-words . Użyje tylko kodowania kolorami, aby zaznaczyć różnicę:

Przykład użycia git diff --color-words

Wyświetlanie połączenia trójstronnego, w tym wspólnego przodka

git config --global merge.conflictstyle diff3

Ustawia styl diff3 jako domyślny: zamiast zwykłego formatu w sprzecznych sekcjach, wyświetlając dwa pliki:

<<<<<<< HEAD
left
=======
right
>>>>>>> master

będzie zawierać dodatkową sekcję zawierającą oryginalny tekst (pochodzący od wspólnego przodka):

<<<<<<< HEAD
first
second
||||||| 
first
=======
last
>>>>>>> master

Ten format ułatwia zrozumienie konfliktu scalania, tj. w tym przypadku dodano lokalnie second , a zdalną zmieniono z first na last , rozwiązując:

last
second

Ta sama rozdzielczość byłaby znacznie trudniejsza przy użyciu domyślnej:

<<<<<<< HEAD
first
second
=======
last
>>>>>>> master

Pokaż różnice między bieżącą wersją a ostatnią wersją

git diff HEAD^ HEAD

Spowoduje to wyświetlenie zmian między poprzednim a bieżącym zatwierdzeniem.

Pliki tekstowe i binarne plist kodowane przez Diff UTF-16

Możesz różnicować pliki zakodowane w UTF-16 (przykłady ciągów lokalizacji dla iOS i macOS to przykłady), określając, w jaki sposób git powinien różnicować te pliki.

Dodaj następujące elementy do pliku ~/.gitconfig .

[diff "utf16"]
textconv = "iconv -f utf-16 -t utf-8"

iconv to program do konwersji różnych kodowań .

Następnie edytuj lub utwórz plik .gitattributes w katalogu głównym repozytorium, w którym chcesz go użyć. Lub po prostu edytuj ~/.gitattributes .

*.strings diff=utf16

Spowoduje to konwersję wszystkich plików z .strings przed git diffs.

Możesz zrobić podobne rzeczy dla innych plików, które można przekonwertować na tekst.

W przypadku plików binarnych plist edytujesz .gitconfig

[diff "plist"]
textconv = plutil -convert xml1 -o -

i .gitattributes

*.plist diff=plist

Porównywanie gałęzi

Pokaż zmiany między końcówką new a końcówką original :

git diff original new     # equivalent to original..new

Pokaż wszystkie zmiany dotyczące new ponieważ jest on rozgałęziony od original :

git diff original...new     # equivalent to $(git merge-base original new)..new

Używanie tylko jednego parametru, takiego jak

git diff oryginał

jest równa

git diff original..HEAD

Pokaż zmiany między dwoma oddziałami

git diff branch1..branch2

Utwórz diff kompatybilny z łatką

Czasami potrzebujesz tylko różnicy do zastosowania za pomocą łatki. git --diff nie działa. Spróbuj zamiast tego:

git diff --no-prefix > some_file.patch

W innym miejscu możesz to odwrócić:

patch -p0 < some_file.patch

różnica między dwoma zatwierdzeniami lub gałęziami

Aby zobaczyć różnicę między dwoma oddziałami

git diff <branch1>..<branch2>

Aby zobaczyć różnicę między dwoma oddziałami

git diff <commitId1>..<commitId2>

Aby wyświetlić różnicę z bieżącą gałęzią

git diff <branch/commitId>

Aby wyświetlić podsumowanie zmian

git diff --stat <branch/commitId>

Aby wyświetlić pliki, które zmieniły się po określonym zatwierdzeniu

git diff --name-only <commitId>

Aby wyświetlić pliki inne niż gałąź

git diff --name-only <branchName>

Aby wyświetlić pliki, które zmieniły się w folderze po określonym zatwierdzeniu

git diff --name-only <commitId> <folder_path>


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow