Zoeken…


Syntaxis

  • 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>

parameters

Parameter Details
-p, -u, --patch Genereer patch
-s, - geen patch Onderdruk diff output. Handig voor opdrachten zoals git show die de patch standaard laten zien, of om het effect van --patch te annuleren
--raw Genereer de diff in raw-formaat
--diff-algoritme = Kies een diff-algoritme. De varianten zijn als volgt: myers , minimal , patience , histogram
--samenvatting Geef een verkort overzicht van uitgebreide koptekstinformatie, zoals creaties, hernames en moduswijzigingen
-only --name Toon alleen namen van gewijzigde bestanden
--name status Toon namen en statussen van gewijzigde bestanden De meest voorkomende statussen zijn M (Gewijzigd), A (Toegevoegd) en D (Verwijderd)
--controleren Waarschuw als wijzigingen conflictmarkeringen of witruimte-fouten introduceren. Wat als witruimte-fouten wordt beschouwd, wordt bestuurd door de configuratie van core.whitespace . Standaard worden witruimten gevolgd (inclusief regels die uitsluitend uit witruimten bestaan) en een spatie die onmiddellijk wordt gevolgd door een tabteken binnen het eerste streepje van de regel als witruimte-fouten. Wordt afgesloten met een niet-nul status als er problemen worden gevonden. Niet compatibel met --exit-code
--full-index In plaats van het eerste handvol tekens, geeft u de volledige blob-objectnamen voor en na de afbeelding weer op de "index" -regel bij het genereren van uitvoer in patch-formaat
--binair --full-index naast --full-index een binaire diff uit die kan worden toegepast met git apply
-een tekst Behandel alle bestanden als tekst.
--kleur Stel de kleurmodus in; dat wil zeggen gebruik --color=always als je een diff naar minder wilt --color=always en de kleur van git wilt behouden

Toon verschillen in werkende branche

git diff

Dit toont de niet- gefaseerde wijzigingen in de huidige branch van de commit ervoor. Het toont alleen veranderingen ten opzichte van de index, wat betekent dat het laat zien wat je zou kunnen toevoegen aan de volgende commit, maar dat niet hebt gedaan. Om deze veranderingen toe te voegen (stage), kun je git add .

Als een bestand wordt geënsceneerd, maar werd gewijzigd nadat het was geënsceneerd, zal git diff de verschillen tonen tussen het huidige bestand en de geënsceneerde versie.

Toon verschillen voor geënsceneerde bestanden

git diff --staged

Dit toont de veranderingen tussen de vorige commit en de momenteel geënsceneerde bestanden.

OPMERKING: U kunt ook de volgende opdrachten gebruiken om hetzelfde te bereiken:

git diff --cached

Dat is gewoon een synoniem voor --staged of

git status -v

Die de uitgebreide instellingen van de status activeren.

Toon zowel gefaseerde als niet-gefaseerde wijzigingen

Om alle gefaseerde en niet- gefaseerde wijzigingen te tonen, gebruik:

git diff HEAD

OPMERKING: U kunt ook de volgende opdracht gebruiken:

git status -vv

Het verschil is dat de output van de laatste u daadwerkelijk zal vertellen welke wijzigingen worden doorgevoerd voor commit en welke niet.

Toon veranderingen tussen twee commits

git diff 1234abc..6789def    # old   new

Bijv .: Toon de wijzigingen die zijn aangebracht in de laatste 3 commits:

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

Opmerking: de twee puntjes (..) zijn optioneel, maar voegen duidelijkheid toe.

Dit toont het tekstuele verschil tussen de commits, ongeacht waar ze zich in de boom bevinden.

Meld gebruiken om alle wijzigingen in de werkmap te bekijken

git difftool -t meld --dir-diff

toont de wijzigingen in de werkmap. Alternatief,

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

toont de verschillen tussen 2 specifieke commits.

Toon verschillen voor een specifiek bestand of map

git diff myfile.txt

Toont de wijzigingen tussen de vorige commit van het opgegeven bestand ( myfile.txt ) en de lokaal gewijzigde versie die nog niet is opgevoerd.

Dit werkt ook voor mappen:

git diff documentation

Het bovenstaande toont de wijzigingen tussen de vorige commit van alle bestanden in de opgegeven map ( documentation/ ) en de lokaal gemodificeerde versies van deze bestanden, die nog niet zijn opgevoerd.

Om het verschil te tonen tussen een versie van een bestand in een bepaalde commit en de lokale HEAD versie, kun je de commit opgeven waarmee je wilt vergelijken:

git diff 27fa75e myfile.txt

Of als je de versie tussen twee afzonderlijke commits wilt zien:

git diff 27fa75e ada9b57 myfile.txt

Om het verschil te tonen tussen de versie gespecificeerd door de hash ada9b57 en de laatste commit op de branch my_branchname voor alleen de relatieve directory genaamd my_changed_directory/ kun je dit doen:

git diff ada9b57 my_branchname my_changed_directory/

Een woord-diff bekijken voor lange regels

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

In plaats van lijnen gewijzigd weer te geven, geeft dit verschillen binnen lijnen weer. Bijvoorbeeld in plaats van:

-Hello world
+Hello world!

Waar de hele regel is gemarkeerd als gewijzigd, wijzigt word-diff de uitvoer in:

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

U kunt de markeringen [- , -] , {+ , +} --word-diff=color door --word-diff=color of --color-words . Dit gebruikt alleen kleurcodering om het verschil te markeren:

Voorbeeld van het gebruik van git diff --color-words

Een drieweg-samenvoeging bekijken inclusief de gemeenschappelijke voorouder

git config --global merge.conflictstyle diff3

Stelt de diff3 stijl in als standaard: in plaats van de gebruikelijke indeling in conflicterende secties, met de twee bestanden:

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

het zal een extra sectie bevatten met de originele tekst (afkomstig van de gemeenschappelijke voorouder):

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

Dit formaat maakt het gemakkelijker om merge-conflict te begrijpen, dwz. in dit geval is lokaal second toegevoegd, terwijl remote first naar last is gewijzigd, opgelost in:

last
second

Dezelfde resolutie zou veel moeilijker zijn geweest met de standaard:

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

Toon verschillen tussen de huidige versie en de laatste versie

git diff HEAD^ HEAD

Dit zal de veranderingen tonen tussen de vorige en de huidige commit.

Verschillende UTF-16 gecodeerde tekst- en binaire plist-bestanden

Je kunt UTF-16-gecodeerde bestanden verschillen (lokalisatiereeksenbestand van iOS en macOS zijn voorbeelden) door op te geven hoe git deze bestanden moet differen.

Voeg het volgende toe aan uw ~/.gitconfig bestand.

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

iconv is een programma om verschillende coderingen te converteren .

Bewerk of maak vervolgens een .gitattributes bestand in de hoofdmap van de repository waar u het wilt gebruiken. Of bewerk gewoon ~/.gitattributes .

*.strings diff=utf16

Dit converteert alle bestanden die eindigen op .strings voordat git diffs.

U kunt vergelijkbare dingen doen voor andere bestanden, die kunnen worden geconverteerd naar tekst.

Voor binaire plist-bestanden bewerkt u .gitconfig

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

en .gitattributes

*.plist diff=plist

Takken vergelijken

Toon de veranderingen tussen de tip van new en de tip van original :

git diff original new     # equivalent to original..new

Toon alle wijzigingen op new omdat deze vertakt is van original :

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

Gebruik slechts één parameter zoals

git diff origineel

is gelijk aan

git diff origineel ... HOOFD

Toon veranderingen tussen twee takken

git diff branch1..branch2

Produceer een patch-compatibele diff

Soms heb je gewoon een diff nodig om een patch aan te brengen. De reguliere git --diff werkt niet. Probeer dit in plaats daarvan:

git diff --no-prefix > some_file.patch

Dan kun je het ergens anders terugdraaien:

patch -p0 < some_file.patch

verschil tussen twee commit of branch

Om het verschil tussen twee vertakkingen te bekijken

git diff <branch1>..<branch2>

Om het verschil tussen twee vertakkingen te bekijken

git diff <commitId1>..<commitId2>

Diff weergeven met huidige vertakking

git diff <branch/commitId>

Samenvatting van wijzigingen bekijken

git diff --stat <branch/commitId>

Bestanden bekijken die zijn gewijzigd na een bepaalde commit

git diff --name-only <commitId>

Bestanden bekijken die anders zijn dan een filiaal

git diff --name-only <branchName>

Om bestanden te bekijken die na een bepaalde commit in een map zijn veranderd

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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow