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:

Exempel på användning av git diff - färg-ord

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>


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow