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