Sök…
Syntax
-
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>
parametrar
Parameter | detaljer |
---|---|
-p, -u, --patch | Generera lapp |
-s, - ingen-patch | Undertryck diff diff. Användbart för kommandon som git show som visar patch som standard, eller för att avbryta effekten av --patch |
--rå | Generera diff i råformat |
--diff-algoritmen = | Välj en diff-algoritm. Varianterna är följande: myers , minimal , patience , histogram |
--sammanfattning | Skriv ut en kondenserad sammanfattning av utökad rubrikinformation som skapelser, byter namn och lägesförändringar |
-Bara --name | Visa endast namn på ändrade filer |
--name-status | Visa namn och status för ändrade filer De vanligaste statuserna är M (modifierad), A (tillagd) och D (raderade) |
--kolla upp | Varna om ändringar introducerar konfliktmarkörer eller fel i vitrummet. Vad som anses som whitespace-fel styrs av core.whitespace konfigurationen. Som standard betraktas efterföljande blanksteg (inklusive rader som enbart består av blanksteg) och ett mellanslagstecken som omedelbart följs av ett flikkaraktär i radens första strecksats som blankstegsfel. Utgår med status utan noll om problem hittas. Inte kompatibel med - exit-kod |
--Full-index | I stället för den första handfulla tecken, visa de fullständiga objektsnamnen före och efter bilden på "index" -raden när du genererar patch-formatutdata |
--binär | Förutom - --full-index , mata ut en binär diff som kan tillämpas med git apply |
-en text | Behandla alla filer som text. |
--Färg | Ställ in färgläge; dvs. använd - --color=always om du vill pipa en diff till mindre och behålla gitens färg |
Visa skillnader i arbetsgren
git diff
Detta kommer att visa de ostadierade förändringarna på den nuvarande grenen från åtagandet före den. Det visar bara förändringar relativt indexet, vilket betyder att det visar vad du kan lägga till i nästa åtagande, men inte har gjort det. För att lägga till (scen) dessa ändringar kan du använda git add
.
Om en fil är iscensatt men ändrades efter att den var iscensatt kommer git diff
att visa skillnaderna mellan den aktuella filen och den iscensatta versionen.
Visa skillnader för iscensatta filer
git diff --staged
Detta visar ändringarna mellan tidigare åtagande och de för närvarande iscensatta filerna.
OBS! Du kan också använda följande kommandon för att utföra samma sak:
git diff --cached
Vilket är bara en synonym för - --staged
eller
git status -v
Vilket utlöser inställningarna för ordet på status
.
Visa både iscensatta och ostadierade förändringar
För att visa alla iscensatta och ostadierade ändringar, använd:
git diff HEAD
OBS! Du kan också använda följande kommando:
git status -vv
Skillnaden är att utgången från det senare faktiskt kommer att berätta för dig vilka förändringar som planeras för åtaganden och vilka inte.
Visa ändringar mellan två åtaganden
git diff 1234abc..6789def # old new
Exempel: Visa ändringarna som gjorts under de tre senaste åtagandena:
git diff @~3..@ # HEAD -3 HEAD
Obs: de två punkterna (..) är valfria, men ger tydlighet.
Detta visar den textuella skillnaden mellan åtagandena, oavsett var de är i trädet.
Använd meld för att se alla ändringar i arbetskatalogen
git difftool -t meld --dir-diff
kommer att visa förändringarna i arbetskatalogen. Alternativt,
git difftool -t meld --dir-diff [COMMIT_A] [COMMIT_B]
visar skillnaderna mellan två specifika åtaganden.
Visa skillnader för en specifik fil eller katalog
git diff myfile.txt
Visar ändringarna mellan den tidigare åtagandet för den angivna filen ( myfile.txt
) och den lokalt modifierade versionen som ännu inte är iscensatt.
Detta fungerar också för kataloger:
git diff documentation
Ovanstående visar ändringarna mellan det tidigare åtagandet för alla filer i den angivna katalogen ( documentation/
) och de lokalt modifierade versionerna av dessa filer, som ännu inte har iscensatt.
För att visa skillnaden mellan någon version av en fil i en given åtagande och den lokala HEAD
versionen kan du ange den åtkomst du vill jämföra mot:
git diff 27fa75e myfile.txt
Eller om du vill se versionen mellan två separata åtaganden:
git diff 27fa75e ada9b57 myfile.txt
För att visa skillnaden mellan den version som specificeras av hash ada9b57
och den senaste åtagandet på grenen my_branchname
för endast den relativa katalogen som heter my_changed_directory/
du kan göra det:
git diff ada9b57 my_branchname my_changed_directory/
Visa en orddiff för långa rader
git diff [HEAD|--staged...] --word-diff
I stället för att visa rader som har ändrats kommer det att visa skillnader inom raderna. Till exempel snarare än:
-Hello world
+Hello world!
Där hela raden är markerad som ändrad ändrar word-diff
utdata till:
Hello [-world-]{+world!+}
Du kan utelämna markörerna [-
, -]
, {+
, +}
genom att ange --word-diff=color
eller - --color-words
. Detta kommer endast att använda färgkodning för att markera skillnaden:
Visning av en trevägs sammanslagning inklusive den gemensamma förfäder
git config --global merge.conflictstyle diff3
Ställer in diff3
stilen som standard: istället för det vanliga formatet i konfliktiga sektioner, visar de två filerna:
<<<<<<< HEAD
left
=======
right
>>>>>>> master
det kommer att innehålla ett ytterligare avsnitt som innehåller originaltexten (kommer från den gemensamma förfäderen):
<<<<<<< HEAD
first
second
|||||||
first
=======
last
>>>>>>> master
Detta format gör det lättare att förstå sammanslagningskonflikt, dvs. i det här fallet har lokalt second
lagts till medan fjärrkontrollen ändrades first
till last
och beslutade att:
last
second
Samma upplösning skulle ha varit mycket svårare med att använda standard:
<<<<<<< HEAD
first
second
=======
last
>>>>>>> master
Visa skillnader mellan aktuell version och senaste version
git diff HEAD^ HEAD
Detta visar förändringarna mellan det tidigare åtagandet och det nuvarande åtagandet.
Diff UTF-16 kodad text och binära plistfiler
Du kan skilja UTF-16 kodade filer (lokaliseringssträngar fil OS och macOS är exempel) genom att ange hur git ska skilja dessa filer.
Lägg till följande i din ~/.gitconfig
fil.
[diff "utf16"]
textconv = "iconv -f utf-16 -t utf-8"
iconv
är ett program för att konvertera olika kodningar .
Redigera eller skapa sedan en .gitattributes
fil i roten till förvaret där du vill använda den. Eller bara redigera ~/.gitattributes
.
*.strings diff=utf16
Detta konverterar alla filer som slutar på .strings
innan git diff.
Du kan göra liknande saker för andra filer som kan konverteras till text.
För binära plistfiler redigerar du .gitconfig
[diff "plist"]
textconv = plutil -convert xml1 -o -
och .gitattributes
*.plist diff=plist
Jämför grenar
Visa ändringarna mellan spetsen på det new
och original
:
git diff original new # equivalent to original..new
Visa alla ändringar på new
eftersom det grenats från original
:
git diff original...new # equivalent to $(git merge-base original new)..new
Använd endast en parameter som
git diff original
är ekvivalent med
git diff original..HEAD
Visa ändringar mellan två grenar
git diff branch1..branch2
Skapa en patch-kompatibel diff
Ibland behöver du bara en diff för att applicera med patch. Den vanliga git --diff
fungerar inte. Prova istället:
git diff --no-prefix > some_file.patch
Sedan någon annanstans kan du vända det:
patch -p0 < some_file.patch
skillnaden mellan två engagemang eller gren
För att se skillnaden mellan två grenar
git diff <branch1>..<branch2>
För att se skillnaden mellan två grenar
git diff <commitId1>..<commitId2>
För att se diff med nuvarande gren
git diff <branch/commitId>
För att se en sammanfattning av ändringarna
git diff --stat <branch/commitId>
För att se filer som ändrats efter en viss åtagande
git diff --name-only <commitId>
För att visa filer som skiljer sig från en gren
git diff --name-only <branchName>
För att se filer som har ändrats i en mapp efter en viss åtagande
git diff --name-only <commitId> <folder_path>