Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
-
2.53.0
2026-02-02
-
2.52.0
2025-11-17
- 2.51.1 → 2.51.2 no changes
-
2.51.0
2025-08-18
- 2.48.1 → 2.50.1 no changes
-
2.48.0
2025-01-10
- 2.46.1 → 2.47.3 no changes
-
2.46.0
2024-07-29
- 2.45.4 no changes
-
2.45.3
2024-11-26
- 2.45.1 → 2.45.2 no changes
-
2.45.0
2024-04-29
- 2.44.1 → 2.44.4 no changes
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 no changes
-
2.43.0
2023-11-20
- 2.42.2 → 2.42.4 no changes
-
2.42.1
2023-11-02
-
2.42.0
2023-08-21
- 2.41.1 → 2.41.3 no changes
-
2.41.0
2023-06-01
- 2.40.1 → 2.40.4 no changes
-
2.40.0
2023-03-12
- 2.39.1 → 2.39.5 no changes
-
2.39.0
2022-12-12
- 2.37.3 → 2.38.5 no changes
-
2.37.2
2022-08-11
- 2.36.1 → 2.37.1 no changes
-
2.36.0
2022-04-18
- 2.35.1 → 2.35.8 no changes
-
2.35.0
2022-01-24
- 2.34.1 → 2.34.8 no changes
-
2.34.0
2021-11-15
- 2.33.1 → 2.33.8 no changes
-
2.33.0
2021-08-16
- 2.32.1 → 2.32.7 no changes
-
2.32.0
2021-06-06
- 2.31.1 → 2.31.8 no changes
-
2.31.0
2021-03-15
- 2.30.1 → 2.30.9 no changes
-
2.30.0
2020-12-27
- 2.29.1 → 2.29.3 no changes
-
2.29.0
2020-10-19
- 2.28.1 no changes
-
2.28.0
2020-07-27
- 2.25.2 → 2.27.1 no changes
-
2.25.1
2020-02-17
-
2.25.0
2020-01-13
- 2.24.1 → 2.24.4 no changes
-
2.24.0
2019-11-04
- 2.22.1 → 2.23.4 no changes
-
2.22.0
2019-06-07
- 2.21.1 → 2.21.4 no changes
-
2.21.0
2019-02-24
- 2.20.1 → 2.20.5 no changes
-
2.20.0
2018-12-09
- 2.19.1 → 2.19.6 no changes
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 no changes
-
2.18.0
2018-06-21
- 2.17.1 → 2.17.6 no changes
-
2.17.0
2018-04-02
-
2.16.6
2019-12-06
-
2.15.4
2019-12-06
-
2.14.6
2019-12-06
-
2.13.7
2018-05-22
-
2.12.5
2017-09-22
-
2.11.4
2017-09-22
- 2.10.5 no changes
-
2.9.5
2017-07-30
-
2.8.6
2017-07-30
- 2.7.6 no changes
-
2.6.7
2017-05-05
-
2.5.6
2017-05-05
-
2.4.12
2017-05-05
-
2.3.10
2015-09-28
- 2.1.4 → 2.2.3 no changes
-
2.0.5
2014-12-17
BESKRIVNING
Jämför filerna i arbetskatalogen och indexet. När sökvägar anges jämförs endast de namngivna sökvägarna. Annars jämförs alla poster i indexet. Utdataformatet är detsamma som för git diff-index och git diff-tree.
ALTERNATIV
-
-p -
-u -
--patch -
Generate patch (see Generera patchtext med -p).
-
-s -
--no-patch -
Undertryck all utdata från diff-maskineriet. Användbart för kommandon som
gitshowsom visar patchen som standard för att undertrycka deras utdata, eller för att avbryta effekten av alternativ som--patch,--stattidigare på kommandoraden i ett alias. -
-U<n> -
--unified=<n> -
Generera skillnader med <n> kontextrader istället för de vanliga tre. implicerar
--patch. -
--output=<fil> -
Utdata till en specifik fil istället för stdout.
-
--output-indicator-new=<tecken> -
--output-indicator-old=<tecken> -
--output-indicator-context=<tecken> -
Ange tecknet som används för att indikera nya, gamla eller kontextuella rader i den genererade patchen. Normalt är de
+,-respektive ' '. -
--raw -
generera diff i råformat Detta är standardvärdet..
-
--patch-with-raw -
Synonym till
-p--raw. -
--indent-heuristic -
Aktivera heuristiken som flyttar olika styckesgränser för att göra patchar lättare att läsa. Detta är standardinställningen.
-
--no-indent-heuristic -
Inaktivera indenteringsheuristiken.
-
--minimal -
Lägg extra tid på att se till att minsta möjliga skillnad produceras.
-
--patience -
Generera en diff med algoritmen "patience diff".
-
--histogram -
Generera en diff med algoritmen "histogram diff".
-
--anchored=<text> -
Generera en diff med algoritmen "anchored diff".
Det här alternativet kan anges mer än en gång.
Om en rad finns i både käll- och destinationsraden, bara finns en gång och börjar med <text>, försöker den här algoritmen förhindra att den visas som en borttagning eller tillägg i utdata. Den använder algoritmen "patience diff" internt.
-
--diff-algorithm=(patience|minimal|histogram|myers) -
Välj en diff-algoritm. Varianterna är följande:
-
default -
myers -
Den grundläggande giriga diff-algoritmen. För närvarande är detta standard.
-
minimal -
Lägg extra tid på att se till att minsta möjliga skillnad produceras.
-
patience -
Använd algoritmen "patience diff" när du genererar patchar.
-
histogram -
Denna algoritm utökar tålamodsalgoritmen till att "stödja vanliga element med låg förekomst".
Om du till exempel, konfigurerade variabeln
diff.algorithmtill ett värde som inte är standard och vill använda standardvärdet, måste du använda alternativet--diff-algorithm=default. -
-
--stat[=<bredd>[,<namn-bredd>[,<antal>]] -
Generera en diffstat. Som standard används så mycket utrymme som behövs för filnamnsdelen och resten för grafdelen. Maximal bredd är som standard terminalbredd, eller 80 kolumner om den inte är ansluten till en terminal, och kan åsidosättas av <bredd>. Bredden på filnamnsdelen kan begränsas genom att ge en annan bredd <namnbredd> efter ett kommatecken eller genom att ställa in
diff.statNameWidth=<namnbredd>. Bredden på grafdelen kan begränsas genom att använda--stat-graph-width=<grafbredd> eller genom att ställa indiff.statGraphWidth=<grafbredd>. Att använda--stateller--stat-graph-widthpåverkar alla kommandon som genererar en statistisk graf, medan att ställa indiff.statNameWidthellerdiff.statGraphWidthinte påverkargitformat-patch. Genom att ange en tredje parameter <count> kan du begränsa utdata till de första <count> raderna, följt av ... om det finns fler.Dessa parametrar kan också ställas in individuellt med
--stat-width=<bredd>,--stat-name-width=<namn-bredd> och--stat-count=<antal>. -
--compact-summary -
Skriv ut en komprimerad sammanfattning av utökad headerinformation, såsom skapande eller borttagning av filer ("ny" eller "borta", valfritt
+lom det är en symbolisk länk) och lägesändringar (+xeller-xför att lägga till respektive ta bort en körbar bit) i diffstat. Informationen placeras mellan filnamnsdelen och grafdelen. Innebär--stat. -
--numstat -
Liknar
--stat, men visar antalet tillagda och borttagna rader i decimalnotation och sökväg utan förkortning, för att göra det mer maskinvänligt. För binära filer matas två-ut istället för att säga00. -
--shortstat -
Skriv endast ut den sista raden i formatet
--statsom innehåller det totala antalet ändrade filer, samt antalet tillagda och borttagna rader. -
-X[<param>,...] -
--dirstat[=<param>,...] -
Visar fördelningen av den relativa mängden ändringar för varje underkatalog. Beteendet för
--dirstatkan anpassas genom att skicka en kommaseparerad lista med parametrar. Standardvärdena styrs av konfigurationsvariabelndiff.dirstat(se git-config[1]). Följande parametrar är tillgängliga:-
changes -
Beräkna dirstat-talen genom att räkna raderna som har tagits bort från källan eller lagts till i destinationen. Detta ignorerar mängden rena kodförflyttningar inom en fil. Med andra ord räknas inte omarrangemang av rader i en fil lika mycket som andra ändringar. Detta är standardbeteendet när ingen parameter anges.
-
lines -
Beräkna dirstat-talen genom att göra den vanliga radbaserade diff-analysen och summera antalet borttagna/tillagda rader. (För binära filer, räkna istället 64-byte-block, eftersom binära filer inte har något naturligt koncept för rader). Detta är ett dyrare
--dirstat-beteende änchanges-beteendet, men det räknar omordnade rader i en fil lika mycket som andra ändringar. Den resulterande utdata överensstämmer med vad du får från de andra--*stat-alternativen. -
files -
Beräkna dirstat-talen genom att räkna antalet ändrade filer. Varje ändrad fil räknas lika i dirstat-analysen. Detta är det beräkningsmässigt billigaste beteendet för
--dirstat, eftersom det inte behöver titta på filinnehållet alls. -
cumulative -
Count changes in a child directory for the parent directory as well. Note that when using
cumulative, the sum of the percentages reported may exceed 100%. The default (non-cumulative) behavior can be specified with thenoncumulativeparameter. - <gränsvärde>
-
En heltalsparameter anger en gränsvärde i procent (3 % som standard). Kataloger som bidrar med mindre än denna procentandel av ändringarna visas inte i utdata.
Exempel: Följande räknar ändrade filer, ignorerar kataloger med mindre än 10 % av den totala mängden ändrade filer och ackumulerar antal underkataloger i överordnade kataloger:
--dirstat=files,10,cumulative. -
-
--cumulative -
Synonym för
--dirstat=cumulative. -
--dirstat-by-file[=<param>,...] -
Synonym för
--dirstat=files,<param>,.... -
--summary -
Output a condensed summary of extended header information such as creations, renames and mode changes.
-
--patch-with-stat -
Synonym till
-p--stat. -
-z -
När
--raw,--numstat,--name-onlyeller--name-statushar angetts, ändra inte sökvägar och använd NUL:er som terminatorer för utdatafält.Utan detta alternativ, citeras sökvägar med "ovanliga" tecken enligt beskrivningen för konfigurationsvariabeln
core.quotePath(se git-config[1]). -
--name-only -
Visa endast namnet på varje ändrad fil i trädet efter avbildningen. Filnamnen är ofta kodade i UTF-8. För mer information, se diskussionen om kodning på manualsidan för git-log[1].
-
--name-status -
Visa endast namn och status för varje ändrad fil. Se beskrivningen av alternativet
--diff-filterför information om vad statusbokstäverna betyder. Precis som--name-onlyär filnamnen ofta kodade i UTF-8. -
--submodule[=<format>] -
Ange hur skillnader i undermoduler visas. När
--submodule=shortanges används formatetshort. Detta format visar bara namnen på incheckningar i början och slutet av intervallet. När--submoduleeller--submodule=loganges används formatetlog. Detta format listar incheckningar i intervallet, precis som git-submodule[1]summarygör. När--submodule=diffanges används formatetdiff. Detta format visar en inline-diff av ändringarna i undermodulinnehållet mellan inchecknings-intervallet. Standardinställningen ärdiff.submoduleeller formatetshortom konfigurationsalternativet inte är inställt. -
--color[=<när>] -
Visa färglagd skillnad.
--color(dvs. utan=<när>) är samma sak som--color=always. <när> kan vara en avalways,aldrigellerauto. -
--no-color -
Stäng av färgad diff. Det är samma sak som
--color=never. -
--color-moved[=<läge>] -
Flyttade kodrader färgas annorlunda. Standardvärdet för <läge> är
noom alternativet inte anges ochzebraom alternativet utan läge anges. Läget måste vara ett av:-
no -
Flyttade linjer markeras inte.
-
default -
Är en synonym för "zebra". Detta kan komma att ändras till ett mer förnuftigt läge i framtiden.
-
plain -
Alla rader som läggs till på en plats och togs bort på en annan plats kommer att färgas med
color.diff.newMoved. På liknande sätt kommercolor.diff.oldMovedatt användas för borttagna rader som läggs till någon annanstans i diff-filen. Det här läget plockar upp alla flyttade rader, men det är inte särskilt användbart i en granskning för att avgöra om ett kodblock flyttades utan permutation. -
blocks -
Block med flyttad text på minst 20 alfanumeriska tecken upptäcks snabbt. De upptäckta blocken målas med antingen färgen
color.diff.(old|new)Moved. Intilliggande block kan inte skiljas åt. -
zebra -
Block med flyttad text detekteras som i
blocks-läge. Blocken målas med antingen färgencolor.diff.(old|new)Movedellercolor.diff.(old|new)MovedAlternative. Växlingen mellan de två färgerna indikerar att ett nytt block har detekterats. -
dimmed-zebra -
Liknar
zebra, men ytterligare nedtoning av ointressanta delar av flyttad kod utförs. Gränslinjerna för två intilliggande block anses intressanta, resten är ointressant.dimmed_zebraär en föråldrad synonym.
-
-
--no-color-moved -
Stäng av rörelsedetektering. Detta kan användas för att åsidosätta konfigurationsinställningar. Det är samma sak som
--color-moved=no. -
--color-moved-ws=<läge>,... -
Detta konfigurerar hur blanksteg ignoreras när rörelsedetektering utförs för
--color-moved. Dessa lägen kan anges som en kommaseparerad lista:-
no -
Ignorera inte blanksteg när du utför rörelsedetektering.
-
ignore-space-at-eol -
Ignorera ändringar i blanktecken vid radslut.
-
ignore-space-change -
Ignorera ändringar i mängden blanktecken. Detta ignorerar blanktecken i radslutet och betraktar alla andra sekvenser av ett eller flera mellanslagstecken som likvärdiga.
-
ignore-all-space -
Ignorera blanktecken när du jämför rader. Detta ignorerar skillnader även om en rad har blanktecken medan den andra raden inte har något.
-
allow-indentation-change -
Ignorera först eventuella blanksteg i flyttdetekteringen, gruppera sedan de flyttade kodblocken endast i ett block om ändringen i blanksteg är densamma per rad. Detta är inkompatibelt med de andra lägena.
-
-
--no-color-moved-ws -
Ignorera inte blanksteg när du utför rörelsedetektering. Detta kan användas för att åsidosätta konfigurationsinställningar. Det är samma sak som
--color-moved-ws=no. -
--word-diff[=<läge>] -
Som standard avgränsas ord med blanksteg; se
--word-diff-regexnedan. <läge> har som standardplainoch måste vara en av:-
color -
Markera ändrade ord med endast färger. Innebär
--color. -
plain -
Visar ord som [
-borttagen-] och{. Gör inga försök att ta escape avgränsare om de förekommer i indata, så utdata kan vara tvetydig.tillagd} -
porcelain -
Använd ett speciellt radbaserat format avsett för skriptanvändning. Tillagda/borttagna/oändrade körningar skrivs ut i det vanliga enhetliga diff-formatet, med början med ett
+/-/` -tecknet i början av raden och sträcker sig till slutet av raden. Nya rader i inmatningen representeras av en tilde `~ på en egen rad. -
none -
Inaktivera orddiff igen.
Observera att trots namnet på det första läget, används färg för att markera de ändrade delarna i alla lägen om det är aktiverat.
-
-
--word-diff-regex=<regex> -
Använd <regex> för att avgöra vad ett ord är, istället för att betrakta sträckor av icke-blanksteg som ett ord. Innebär även
--word-diffom det inte redan var aktiverat.Varje icke-överlappande matchning av <regex> betraktas som ett ord. Allt mellan dessa matchningar betraktas som blanktecken och ignoreras(!) i syfte att hitta skillnader. Du kanske vill lägga till |[
^[:space:]] i ditt reguljära uttryck för att se till att det matchar alla tecken som inte är blanktecken. En matchning som innehåller en nyrad avkortas tyst(!) vid nyradslinjen.Till exempel kommer
--word-diff-regex=.att behandla varje tecken som ett ord och, på motsvarande sätt, visa skillnader tecken för tecken.Regex-funktionen kan också ställas in via en diff-drivrutin eller ett konfigurationsalternativ, se gitattributes[5] eller git-config[1]. Om du anger den explicit åsidosätts alla diff-drivrutiner eller konfigurationsinställningar. Diff-drivrutiner åsidosätter konfigurationsinställningar.
-
--color-words[=<regex>] -
Motsvarande
--word-diff=colorplus (om ett regex angavs)--word-diff-regex=<regex>. -
--no-renames -
Stäng av namnbytesdetektering, även när konfigurationsfilen anger standardinställningen för det.
-
--rename-empty -
--no-rename-empty -
Huruvida tomma blobbar ska användas som namnbyteskälla.
-
--check -
Varna om ändringar introducerar konfliktmarkörer eller blankteckenfel. Vad som anses vara blankteckenfel styrs av konfigurationen av
core.whitespace. Som standard betraktas efterföljande blanktecken (inklusive rader som enbart består av blanktecken) och ett mellanslagstecken som omedelbart följs av ett tabbtecken inuti radens första indrag som blankteckenfel. Avslutas med status som inte är noll om problem upptäcks. Inte kompatibel med--exit-code. -
--ws-error-highlight=<slag> -
Markera blankteckenfel i raderna
context,oldellernewi diff-filen. Flera värden separeras med kommatecken,noneåterställer tidigare värden,defaultåterställer listan tillnewochallär en förkortning förold,new,context. När detta alternativ inte anges och konfigurationsvariabelndiff.wsErrorHighlightinte är angiven, markeras endast blankteckenfel i radernanew. Blankteckenfelen är färgade medcolor.diff.whitespace. -
--full-index -
Istället för de första tecknen, visa de fullständiga namnen på blob-objekten före och efter avbildningen på "index"-raden när du genererar utdata för patch-format.
-
--binary -
Förutom
--full-index, mata ut en binär diff som kan tillämpas medgit-apply. implicerar--patch. -
--abbrev[=<n>] -
Istället för att visa det fullständiga 40-byte hexadecimala objektnamnet i utdata i diff-raw-format och diff-tree-rubrikrader, visa det kortaste prefixet som är minst <n> hexdigits långt och som unikt refererar till objektet. I diff-patch-utdataformat har
--full-indexhögre prioritet, d.v.s. om--full-indexanges kommer fullständiga blobnamn att visas oavsett--abbrev. Antal siffror som inte är standard kan anges med--abbrev=<n>. -
-B[<n>][/<m>] -
--break-rewrites[=[<n>][/<m>]] -
Dela upp fullständiga omskrivningsändringar i par av radera och skapa. Detta tjänar två syften:
Det påverkar hur en förändring som innebär en total omskrivning av en fil, inte som en serie borttagningar och infogningar blandade med ett fåtal rader som råkar matcha textuellt som kontexten, utan som en enda borttagning av allt gammalt följt av en enda infogning av allt nytt, och siffran <m> styr denna aspekt av
-B-alternativet (standard är 60%).-B/70%anger att mindre än 30% av originalet ska finnas kvar i resultatet för att Git ska betrakta det som en total omskrivning (dvs. annars kommer den resulterande patchen att vara en serie borttagningar och infogningar blandade med kontextrader).När den används med
-Mbetraktas även en helt omskriven fil som källa till ett namnbyte (vanligtvis betraktar-Mbara en fil som försvunnit som källa till ett namnbyte), och siffran <n> styr denna aspekt av alternativet-B(standard är 50%).-B20%anger att en ändring med tillägg och borttagning jämfört med 20% eller mer av filens storlek är berättigad att plockas upp som en möjlig källa till ett namnbyte till en annan fil. -
-M[<n>] -
--find-renames[=<n>] -
detektera namnändringar Om <n> anges, är det ett tröskelvärde för likhetsindexet (dvs. mängden tillägg/borttagningar jämfört med filens storlek). Till exempel betyder
-M90%att Git ska betrakta ett borttagnings-/tilläggspar som ett namnbyte om mer än 90 % av filen inte har ändrats. Utan ett%-tecken ska talet läsas som ett bråktral, med ett decimaltecken före. Dvs.-M5blir 0,5 och är således detsamma som-M50%. På liknande sätt är-M05detsamma som-M5%. För att begränsa detekteringen till exakta namnbyten, använd-M100%. Standardlikhetsindexet är 50 %. -
-C[<n>] -
--find-copies[=<n>] -
Identifiera kopior såväl som byt namn. Se även
--find-copies-harder. Om <n> anges har det samma betydelse som för-M<n>. -
--find-copies-harder -
Av prestandaskäl hittar
-C-alternativet som standard bara kopior om originalfilen för kopian ändrades i samma ändringsuppsättning. Denna flagga gör att kommandot inspekterar omodifierade filer som kandidater för kopians källa. Detta är en mycket dyr operation för stora projekt, så använd den med försiktighet. Att ge mer än ett-C-alternativ har samma effekt. -
-D -
--irreversible-delete -
Utelämna preimage för borttagningar, d.v.s. skriv bara ut rubriken men inte skillnaden mellan preimage och
/dev/null. Den resulterande patchen är inte avsedd att tillämpas medpatchellergitapply; detta är enbart för personer som bara vill koncentrera sig på att granska texten efter ändringen. Dessutom saknar utdata uppenbarligen tillräckligt med information för att tillämpa en sådan patch i omvänd ordning, även manuellt, därav namnet på alternativet.När det används tillsammans med
-B, utelämna även förbilden i borttagningsdelen av ett borttagnings-/skaparpar. -
-l<num> -
Alternativen
-Moch-Cinvolverar några preliminära steg som kan upptäcka delmängder av namnbyten/kopior billigt, följt av en uttömmande reservdel som jämför alla återstående oparade destinationer med alla relevanta källor. (För namnbyten är endast återstående oparade källor relevanta; för kopior är alla originalkällor relevanta.) För N källor och destinationer är denna uttömmande kontroll O(N^2). Detta alternativ förhindrar att den uttömmande delen av namnbytes-/kopieringsdetektering körs om antalet inblandade käll-/destinationsfiler överstiger det angivna antalet. Standardvärdet ärdiff.renameLimit. Observera att värdet 0 behandlas som obegränsat. -
--diff-filter=[(A|C|D|M|R|T|U|X|B)...[*]] -
Markera endast filer som är Tillagda (
A), Kopierade (C), Borttagna (D), Modifierade (M), Omdöpta (R), har sin typ (dvs. vanlig fil, symlänk, undermodul, …) ändrad (T), är Osammanslagna (U), är Okända (X) eller har fått sin parning Bruten (B). Vilken kombination som helst av filtertecknen (inklusive inga) kan användas. När*(Allt-eller-inget) läggs till i kombinationen markeras alla sökvägar om det finns någon fil som matchar andra kriterier i jämförelsen; om det inte finns någon fil som matchar andra kriterier markeras ingenting.Also, these upper-case letters can be downcased to exclude. E.g.
--diff-filter=adexcludes added and deleted paths.Observera att inte alla diffs kan innehålla alla typer. Till exempel kan kopierade och omdöpta poster inte visas om detektering för dessa typer är inaktiverat.
-
-S<sträng> -
Leta efter skillnader som ändrar antalet förekomster av den angivna <sträng> (dvs. tillägg/borttagning) i en fil. Avsedd för skriptutvecklarens bruk.
Det är användbart när du letar efter ett exakt kodblock (som en struktur) och vill veta blockets historia sedan det först kom till: använd funktionen iterativt för att mata in det intressanta blocket i föravbildningen tillbaka till
-Soch fortsätt tills du får den allra första versionen av blocket.Binära filer genomsöks också.
-
-G<regex> -
Leta efter skillnader vars patchtext innehåller tillagda/borttagna rader som matchar <regex>.
För att illustrera skillnaden mellan
-S<regex>--pickaxe-regexoch-G<regex>, betrakta en incheckning med följande diff i samma fil:+ return frotz(nitfol, two->ptr, 1, 0); ... - hit = frotz(nitfol, mf2.ptr, 1, 0);
Medan git log -G"frotz\(nitfol" visar denna incheckning, gör git log -S"frotz\(nitfol" --pickaxe-regex inte det (eftersom antalet förekomster av den strängen inte ändrades).
Om inte
--textanges kommer patchar av binära filer utan ett textconv-filter att ignoreras.Se posten pickaxe i gitdiffcore[7] för mer information.
-
--find-object=<objekt-id> -
Leta efter skillnader som ändrar antalet förekomster av det angivna objektet. I likhet med
-Sär det bara argumentet som skiljer sig genom att det inte söker efter en specifik sträng utan efter ett specifikt objekt-id.Objektet kan vara en blob eller en undermodul-incheckning. Det innebär att
-t-alternativet igit-logockså kan hitta träd. -
--pickaxe-all -
När
-Seller-Ghittar en ändring, visa alla ändringar i den ändringsmängden, inte bara de filer som innehåller ändringen i <sträng>. -
--pickaxe-regex -
Behandla <sträng> som ges till
-Ssom ett utökat POSIX-reguljärt uttryck som matchar. -
-O<ordingsfil> -
Styr ordningen i vilka filer visas i utdata. Detta åsidosätter konfigurationsvariabeln
diff.orderFile(se git-config[1]). För att avbrytadiff.orderFile, använd-O/dev/null.Utmatningsordningen bestäms av ordningen på glob-mönstren i <ordingsfil>. Alla filer med sökvägar som matchar det första mönstret matas ut först, alla filer med sökvägar som matchar det andra mönstret (men inte det första) matas ut härnäst, och så vidare. Alla filer med sökvägar som inte matchar något mönster matas ut sist, som om det fanns ett implicit match-all-mönster i slutet av filen. Om flera sökvägar har samma rangordning (de matchar samma mönster men inga tidigare mönster), är deras utmatningsordning i förhållande till varandra den normala ordningen.
<ordingsfil> tolkas enligt följande:
-
Tomma rader ignoreras, så de kan användas som avgränsare för läsbarhet.
-
Rader som börjar med en hash ("
#") ignoreras, så de kan användas för kommentarer. Lägg till ett bakåtsnedstreck ("\") i början av mönstret om det börjar med en hash. -
Varje annan rad innehåller ett enda mönster.
Mönster har samma syntax och semantik som mönster som används för
fnmatch(3) utanFNM_PATHNAME-flaggan, förutom att ett sökvägsnamn också matchar ett mönster om borttagning av ett antal av de slutliga sökvägsnamnskomponenterna matchar mönstret. Till exempel matchar mönstret "foo*bar" "fooasdfbar" och "foo/bar/baz/asdf" men inte "foobarx". -
-
--skip-to=<fil> -
--rotate-to=<fil> -
Släng filerna före den namngivna <fil> från utdata (dvs. hoppa till), eller flytta dem till slutet av utdata (dvs. rotera till). Dessa alternativ uppfanns främst för användning av
gitdifftool-kommandot, och kanske inte är särskilt användbara annars. -
-R -
Växla två indata; det vill säga visa skillnader mellan index eller fil på disk och trädinnehåll.
-
--relative[=<sökväg>] -
--no-relative -
När den körs från en underkatalog till projektet kan den få instruktioner att exkludera ändringar utanför katalogen och visa sökvägar relativa till den med detta alternativ. När du inte befinner dig i en underkatalog (t.ex. i ett bart arkiv) kan du namnge vilken underkatalog som utdata ska vara relativ till genom att ange <sökväg> som argument.
--no-relativekan användas för att ångra både konfigurationsalternativetdiff.relativeoch föregående--relative. -
-a -
--text -
Hantera alla filer som text.
-
--ignore-cr-at-eol -
Ignorera vagnretur i slutet av raden vid en jämförelse.
-
--ignore-space-at-eol -
Ignorera ändringar i blanktecken vid radslut.
-
-b -
--ignore-space-change -
Ignorera ändringar i mängden blanktecken. Detta ignorerar blanktecken i radslutet och betraktar alla andra sekvenser av ett eller flera mellanslagstecken som likvärdiga.
-
-w -
--ignore-all-space -
Ignorera blanktecken när du jämför rader. Detta ignorerar skillnader även om en rad har blanktecken medan den andra raden inte har något.
-
--ignore-blank-lines -
Ignorera ändringar i rader som är helt blanka.
-
-I<regex> -
--ignore-matching-lines=<regex> -
Ignorera ändringar vars alla rader matchar <regex>. Det här alternativet kan anges mer än en gång.
-
--inter-hunk-context=<nummer> -
Visar sammanhanget mellan olika stycken, upp till det angivna <antal> rader, och sammanfogar därmed stycken som ligger nära varandra. Standardvärdet är
diff.interHunkContexteller 0 om konfigurationsalternativet inte är inställt. -
-W -
--function-context -
Visa hela funktionen som kontextrader för varje ändring. Funktionsnamnen bestäms på samma sätt som
gitdiffräknar ut patch-hunk-rubriker (se "Definiera en anpassad hunk-rubriker" i gitattributes[5]). -
--exit-code -
Få programmet att avslutas med koder som liknar
diff(1). Det vill säga, det avslutas med 1 om det fanns skillnader och 0 betyder inga skillnader. -
--quiet -
Inaktivera all utdata från programmet. Innebär
--exit-code. Inaktiverar exekvering av externa diff-hjälpare vars avslutningskod inte är betrodd, d.v.s. deras respektive konfigurationsalternativdiff.trustExitCodeellerdiff.<driver>.trustExitCodeeller miljövariabelnGIT_EXTERNAL_DIFF_TRUST_EXIT_CODEär falskt. -
--ext-diff -
Tillåt att en extern diff-hjälp körs. Om du ställer in en extern diff-drivrutin med gitattributes[5], måste du använda den här alternativet med git-log[1] och vänner.
-
--no-ext-diff -
Tillåt inte externa diff-drivrutiner.
-
--textconv -
--no-textconv -
Tillåt (eller förbjud) att externa textkonverteringsfilter körs vid jämförelse av binära filer. Se gitattributes[5] för mer information. Eftersom textconv-filter vanligtvis är en envägskonvertering är den resulterande diff-funktionen lämplig för mänsklig konsumtion, men kan inte tillämpas. Av denna anledning är textconv-filter som standard endast aktiverade för git-diff[1] och git-log[1], men inte för git-format-patch[1] eller diff rörmokeri-kommandon.
-
--ignore-submodules[=(none|untracked|dirty|all)] -
Ignorera ändringar i undermoduler i diff-genereringen.
allär standardinställningen. Omnoneanvänds betraktas undermodulen som modifierad när den antingen innehåller ospårade eller modifierade filer, eller om dessHEADskiljer sig från incheckningen som registrerats i superprojektet, och kan användas för att åsidosätta alla inställningar iignore-alternativet i git-config[1] eller gitmodules[5]. Näruntrackedanvänds anses undermoduler inte vara smutsiga när de bara innehåller ospårat innehåll (men de skannas fortfarande efter modifierat innehåll). Omdirtyanvänds ignoreras alla ändringar i arbetsträdet för undermoduler, endast ändringar i de incheckningar som lagras i superprojektet visas (detta var beteendet fram till 1.7.0). Omallanvänds döljs alla ändringar i undermoduler. -
--src-prefix=<prefix> -
Visa givet käll_<prefix>_ istället för ”a/”.
-
--dst-prefix=<prefix> -
Visa den angivna mål <prefix> istället för "b/".
-
--no-prefix -
Visa inte käll- eller målprefix.
-
--default-prefix -
Använd standard käll- och destinationsprefixen ("a/" och "b/"). Detta åsidosätter konfigurationsvariabler som
diff.noprefix,diff.srcPrefix,diff.dstPrefixochdiff.mnemonicPrefix(se git-config[1]). -
--line-prefix=<prefix> -
Lägg till ett ytterligare <prefix> före varje utdatarad.
-
--ita-invisible-in-index -
Som standard visas poster som läggs till av
gitadd-Nsom en befintlig tom fil igitdiffoch en ny fil igitdiff--cached. Det här alternativet gör att posten visas som en ny fil igitdiffoch obefintlig igitdiff--cached. Det här alternativet kan ångras med--ita-visible-in-index. Båda alternativen är experimentella och kan komma att tas bort i framtiden. - --max-depth=<djup>
-
För varje sökvägsspecifikation som anges på kommandoraden, gå ner högst <djup>-nivåer i kataloger. Värdet
-1betyder ingen gräns. Kan inte kombineras med jokertecken i sökvägsspecifikationen. Givet ett träd som innehållerfoo/bar/bazvisar följande lista de träffar som genereras av varje uppsättning alternativ:-
--max-depth=0--foo:foo -
--max-depth=1--foo:foo/bar -
--max-depth=1--foo/bar:foo/bar/baz -
--max-depth=1--foofoo/bar:foo/bar/baz -
--max-depth=2--foo:foo/bar/baz
Om ingen sökvägsspec anges mäts djupet som om alla poster på toppnivå vore specificerade. Observera att detta skiljer sig från att mäta från roten, eftersom
--max-depth=0fortfarande skulle returnerafoo. Detta låter dig fortfarande begränsa djupet samtidigt som du frågar efter en delmängd av posterna på toppnivå.Observera att det här alternativet endast stöds för skillnader mellan trädobjekt, inte mot indexet eller arbetskatalog.
-
För en mer detaljerad förklaring av dessa vanliga alternativ, se även gitdiffcore[7].
- -1 --base
- -2 --ours
- -3 --theirs
- -0
-
Skillnad mot "basversionen", "vår gren" respektive "deras gren". Med dessa alternativ visas inte skillnader för sammanslagna poster.
Standardinställningen är att diff-a mot vår gren (-2) och de rent upplösta sökvägarna. Alternativet -0 kan anges för att utelämna diff-utdata för osammanfogade poster och bara visa "Osammanfogad".
- -c
- --cc
-
Detta jämför steg 2 (vår gren), steg 3 (deras gren) och arbetskatalogen och matar ut en kombinerad diff, liknande hur diff-tree visar en sammanslagnigs-incheckning med dessa flaggor.
- -q
-
Förbli tyst även för filer som inte finns
Raw output format
Det råa utdataformatet från git-diff-index, git-diff-tree, git-diff-files och git diff --raw är mycket lika.
Dessa kommandon jämför alla två uppsättningar saker; vad som jämförs skiljer sig åt:
-
git-diff-index<trädlikt> -
jämför <trädlikt> och filerna på filsystemet.
-
git-diff-index--cached<trädlikt> -
jämför <trädlikt> och indexet.
-
git-diff-tree[-r] <trädlikt-1> <trädlikt-2> [<mönster>...] -
jämför träden som namnges av de två argumenten.
-
git-diff-files[<mönster>...] -
jämför indexet och filerna på filsystemet.
Kommandot git-diff-tree börjar sin utmatning genom att skriva ut hashen för det som jämförs. Därefter skriver alla kommandon ut en utmatningsrad per ändrad fil.
En utmatningsrad formateras så här:
in-place edit :100644 100644 bcd1234 0123456 M file0 copy-edit :100644 100644 abcd123 1234567 C68 file1 file2 rename-edit :100644 100644 abcd123 1234567 R86 file1 file3 create :000000 100644 0000000 1234567 A file4 delete :100644 000000 1234567 0000000 D file5 unmerged :000000 000000 0000000 0000000 U file6
Det vill säga, från vänster till höger:
-
ett kolon.
-
läge för "src"; 000000 om skapande eller osammanslagen.
-
ett mellanslag.
-
läge för "dst"; 000000 om borttagning eller osammanslagen.
-
ett mellanslag.
-
sha1 för "src"; 0{40} om skapande eller osammanslagen.
-
ett mellanslag.
-
sha1 för "dst"; 0{40} om borttagning, avsammanslagning eller "arbetsträdet är inte synkroniserat med indexet".
-
ett mellanslag.
-
status, följt av ett valfritt "poäng"-nummer.
-
en tabb eller ett NUL när alternativet
-zanvänds. -
sökvägen för "src"
-
en tabb eller ett NUL när
-z-alternativet används; finns endast för C eller R. -
sökväg för "dst"; finns bara för C eller R.
-
en LF eller en NUL när
-z-alternativet används, för att avsluta posten.
Möjliga statusbokstäver är:
-
A: tillägg av en fil -
C: kopiera en fil till en ny -
D: radering av en fil -
M: modifiering av innehållet eller läget för en fil -
R: byta namn på en fil -
T: ändring av filtypen (vanlig fil, symbolisk länk eller undermodul) -
U: filen är avsammanfogad (du måste slutföra sammanfogningen innan den kan sparas) -
X: "okänd" ändringstyp (troligtvis en bugg, vänligen rapportera det)
Statusbokstäverna C och R följs alltid av en poäng (som anger procentandelen likhet mellan källan och målet för flytten eller kopian). Statusbokstaven M kan följas av en poäng (som anger procentandelen olikhet) för filomskrivningar.
sha1 för "dst" visas som enbart nollor (0) om en fil i filsystemet inte är synkroniserad med indexet.
Exempel:
:100644 100644 5be4a4a 0000000 M-fil.c
Utan -z-alternativet citeras sökvägar med "ovanliga" tecken enligt beskrivningen för konfigurationsvariabeln core.quotePath (se git-config[1]). Med -z matas filnamnet ut ordagrant och raden avslutas med en NUL-byte.
diff-format för sammanslagningar
git-diff-tree, git-diff-files och git-diff --raw kan använda -c eller --cc alternativ för att generera diff-utdata även för merge-commits. Utdata skiljer sig från formatet som beskrivs ovan på följande sätt:
-
det finns ett kolon för varje förälder
-
det finns fler "src"-lägen och "src" sha1
-
status är sammanfogade statustecken för varje förälder
-
inget valfritt "poängnummer"
-
tabbavgränsade sökvägar till filen
För -c och --cc visas endast destinations- eller slutsökvägen även om filen har bytt namn på någon sida av historiken. Med --combined-all-paths visas namnet på sökvägen i varje förälder följt av namnet på sökvägen i iincheckningsammanslagingen.
Exempel för -c och --cc utan --combined-all-paths:
::100644 100644 100644 fabadb8 cc95eb0 4866510 MM desc.c ::100755 100755 100755 52b7a2d 6d1ac04 d2ac7d7 RM bar.sh ::100644 100644 100644 e07d6c5 9042e82 ee91881 RR phooey.c
Exempel när --combined-all-paths läggs till antingen -c eller --cc:
::100644 100644 100644 fabadb8 cc95eb0 4866510 MM desc.c desc.c desc.c ::100755 100755 100755 52b7a2d 6d1ac04 d2ac7d7 RM foo.sh bar.sh bar.sh ::100644 100644 100644 e07d6c5 9042e82 ee91881 RR fooey.c fuey.c phooey.c
Observera att kombinerad diff endast listar filer som har modifierats från alla föräldrar.
Generera patchtext med -p
Att köra git-diff[1], git-log[1], git-show[1], git-diff-index[1], git-diff-tree[1] eller git-diff-files[1] med alternativet -p producerar patchtext. Du kan anpassa skapandet av patchtext via miljövariablerna GIT_EXTERNAL_DIFF och GIT_DIFF_OPTS (se git[1]), och attributet diff (se gitattributes[5]).
Det som -p-alternativet producerar skiljer sig något från det traditionella diff-formatet:
-
Det föregås av en "git diff"-rubrik som ser ut så här:
diff --git a/fil1 b/fil2
Filnamnen
a/ochb/är desamma om det inte rör sig om att byta namn/kopiera. Speciellt, även vid skapande eller borttagning, används/dev/nullinte istället för filnamnena/ellerb/.När ett namnbyte/kopiering är inblandat visar
fil1ochfil2namnet på källfilen för namnbytet/kopieringen respektive namnet på filen som namnbytet/kopieringen producerar. -
It is followed by one or more extended header lines:
oldmode<sökväg>newmode<behörigheter>deletedfilemode<behörigheter>newfilemode<läge>copyfrom<sökväg>copyto<sökväg>renamefrom<sökväg>renameto<sökväg>similarityindex<nummer>dissimilarityindex<nummer>index<hash>..<hash> <behörigheter>Fil-rättigheter <behörigheter> skrivs ut som 6-siffriga oktala tal inklusive filtyp och filbehörighetsbitar.
Sökvägar i utökade rubriker inkluderar inte prefixen
a/ochb/.Likhetsindexet är andelen oförändrade rader och olikhetsindexet är andelen ändrade rader. Det är ett avrundat heltal följt av ett procenttecken. Likhetsindexvärdet 100 % är således reserverat för två lika filer, medan 100 % olikhet innebär att ingen rad från den gamla filen kom med i den nya.
Indexraden innehåller namnen på blob-objekten före och efter ändringen. <behörigheter> inkluderas om fil-rättigheterna inte ändras; annars anger separata rader det gamla och det nya läget.
-
Sökvägar med "ovanliga" tecken anges i citat enligt beskrivningen för konfigurationsvariabeln
core.quotePath(se git-config[1]). -
Alla
fil1-filer i utdata refererar till filer före incheckning, och allafil2-filer refererar till filer efter incheckning. Det är felaktigt att tillämpa varje ändring på varje fil sekventiellt. Till exempel kommer den här patchen att byta a och b:diff --git a/a b/b rename from a rename to b diff --git a/b b/a rename from b rename to a
-
Hunk-rubriker nämner namnet på den funktion som hunken gäller för. Se "Definiera en anpassad hunk-rubrik" i gitattributes[5] för detaljer om hur man anpassar detta till specifika språk.
Kombinerat diff-format
Alla diff-genererande kommandon kan använda -c eller --cc alternativet för att skapa en kombinerad diff när en merge visas. Detta är standardformatet när merges visas med git-diff[1] eller git-show[1]. Observera också att du kan ge lämplig --diff-merges alternativ till vilket som helst av dessa kommandon för att tvinga generering av diffs i ett specifikt format.
Ett "kombinerat diff"-format ser ut så här:
diff --combined describe.c
index fabadb8,cc95eb0..4866510
--- a/describe.c
+++ b/describe.c
@@@ -98,20 -98,12 +98,20 @@@
return (a_date > b_date) ? -1 : (a_date == b_date) ? 0 : 1;
}
- static void describe(char *arg)
-static void describe(struct commit *cmit, int last_one)
++static void describe(char *arg, int last_one)
{
+ unsigned char sha1[20];
+ struct commit *cmit;
struct commit_list *list;
static int initialized = 0;
struct commit_name *n;
+ if (get_sha1(arg, sha1) < 0)
+ usage(describe_usage);
+ cmit = lookup_commit_reference(sha1);
+ if (!cmit)
+ usage(describe_usage);
+
if (!initialized) {
initialized = 1;
for_each_ref(get_name);
-
Den föregås av en "git diff"-rubrik, som ser ut så här (när alternativet
-canvänds):diff --combined fil
eller så här (när
--cc-alternativet används):diff --cc fil
-
Den följs av en eller flera utökade rubrikrader (detta exempel visar en sammanslagning med två föräldrar):
index<hash>,<hash>..<hash>mode<behörighter>,<behörighter>..<behörighter>newfilemode<behörighter>deletedfilemode<behörighter>,<behörighter>Raden
mode<behörighter>,<behörighter>..<behörighter> visas bara om minst en av <behörighter> skiljer sig från resten. Utökade rubriker med information om detekterad innehållsförflyttning (namnbyten och kopieringsdetektering) är utformade för att fungera med diff-värdet för två <trädlikt> och används inte av kombinerat diff-format. -
Den följs av en tvåradig från-fil/till-fil-rubrik:
--- a/fil +++ b/fil
I likhet med den tvåradiga rubriken för det traditionella unified diff-formatet används
/dev/nullför att signalera skapade eller raderade filer.Om alternativet --combined-all-paths däremot anges, får du istället för en tvåradig från-fil/till-fil-rubrik en N+1-radig from-file/to-file-rubrik, där N är antalet föräldrar i sammanslagings-incheckning:
--- a/fil --- a/fil --- a/fil +++ b/fil
Detta utökade format kan vara användbart om namnbytes- eller kopieringsdetektering är aktivt, så att du kan se filens ursprungliga namn i olika överordnade filer.
-
Chunk-headerformatet är modifierat för att förhindra att folk av misstag matar in det i
patch-p1. Kombinerat diff-format skapades för granskning av sammanslagings inchecknings-ändringar och var inte avsett att tillämpas. Ändringen liknar ändringen i den utökade index-headern:@@@ <från-fil-omfång> <från-fil-omfång> <till-fil-omfånge> @@@
Det finns (antal föräldrar + 1)
@-tecken i chunk-rubriken för kombinerat diff-format.
Till skillnad från det traditionella "unified" diff-formatet, som visar två filer A och B med en enda kolumn som har prefixet - (minus — visas i A men tas bort i B), + (plus — saknas i A men läggs till i B) eller " " (mellanslag — oförändrat), jämför detta format två eller flera filer fil1, fil2,… med en fil X, och visar hur X skiljer sig från var och en av filN. En kolumn för var och en av filN läggs till på utdataraden för att ange hur X:s rad skiljer sig från den.
Ett --tecknet i kolumn N betyder att raden visas i fileN men inte i resultatet. Ett +-tecknet i kolumn N betyder att raden visas i resultatet, och fileN har inte den raden (med andra ord, raden lades till, ur den överordnade filens synvinkel).
I exemplet ovan ändrades funktionssignaturen från båda filerna (därav två borttagningar av - från både fil1 och fil2, plus ++ för att betyda att en rad som lades till inte visas i vare sig fil1 eller fil2). Dessutom är åtta andra rader desamma från fil1 men visas inte i fil2 (därav prefixet +).
När det visas med git diff-tree -c jämför den föräldrarna till en sammanslagnings-incheckning med sammanslagnings-resultatet (dvs. file1..fileN är föräldrarna). När det visas med git diff-files -c jämför den de två olösta sammanslagnings-föräldrarna med den fungerande arbetskatalog filen (dvs. file1 är steg 2, även kallad "vår version", file2 är steg 3, även kallad "deras version").
andra diff-format
Alternativet --summary beskriver nyligen tillagda, raderade, omdöpta och kopierade filer. Alternativet --stat lägger till diffstat(1)-grafen till utdata. Dessa alternativ kan kombineras med andra alternativ, såsom -p, och är avsedda för mänsklig konsumtion.
När en ändring som involverar ett namnbyte eller en kopia visas, formaterar --stat sökvägarna kompakt genom att kombinera gemensamma prefix och suffix för sökvägarna. Till exempel, en ändring som flyttar arch/i386/Makefile till arch/x86/Makefile medan fyra rader ändras kommer att visas så här:
arch/{i386 => x86}/Makefile | 4 +--
Alternativet --numstat ger informationen diffstat(1) men är utformat för enklare maskinanvändning. En post i --numstat-utdata ser ut så här:
1 2 README
3 1 arch/{i386 => x86}/Makefile
Det vill säga, från vänster till höger:
-
antalet tillagda rader;
-
en tab;
-
antalet raderade rader;
-
en tab;
-
sökväg (möjligen med information om namnbyte/kopiering);
-
en nyrad.
När utdataalternativet -z är aktiverat formateras utdata på följande sätt:
1 2 README NUL 3 1 NUL arch/i386/Makefile NUL arch/x86/Makefile NUL
Som är:
-
antalet tillagda rader;
-
en tab;
-
antalet raderade rader;
-
en tab;
-
en NUL (existerar endast om den byts om/kopieras);
-
sökväg i föravbildning;
-
en NUL (existerar endast om den byts om/kopieras);
-
sökväg i postimage (finns endast om det byts namn/kopieras);
-
en NUL.
Den extra NUL före preimage-sökvägen i omdöpt skiftläge är till för att tillåta skript som läser utdata att avgöra om den aktuella posten som läses är en post med en enda sökväg eller en omdöpnings-/kopieringspost utan att läsa framåt. Efter att ha läst tillagda och borttagna rader skulle läsning upp till NUL ge sökvägsnamnet, men om det är NUL kommer posten att visa två sökvägar.
GIT
En del av git[1]-sviten