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 no changes
-
2.52.0
2025-11-17
- 2.51.1 → 2.51.2 no changes
-
2.51.0
2025-08-18
- 2.50.1 no changes
-
2.50.0
2025-06-16
- 2.47.1 → 2.49.1 no changes
-
2.47.0
2024-10-06
- 2.45.1 → 2.46.4 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.1 → 2.42.4 no changes
-
2.42.0
2023-08-21
- 2.41.1 → 2.41.3 no changes
-
2.41.0
2023-06-01
- 2.34.1 → 2.40.4 no changes
-
2.34.0
2021-11-15
- 2.31.1 → 2.33.8 no changes
-
2.31.0
2021-03-15
- 2.29.1 → 2.30.9 no changes
-
2.29.0
2020-10-19
- 2.23.1 → 2.28.1 no changes
-
2.23.0
2019-08-16
- 2.21.1 → 2.22.5 no changes
-
2.21.0
2019-02-24
- 2.19.1 → 2.20.5 no changes
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 no changes
-
2.18.0
2018-06-21
- 2.17.0 → 2.17.6 no changes
-
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.10.5 → 2.11.4 no changes
-
2.9.5
2017-07-30
-
2.8.6
2017-07-30
-
2.7.6
2017-07-30
- 2.6.7 no changes
-
2.5.6
2017-05-05
- 2.1.4 → 2.4.12 no changes
-
2.0.5
2014-12-17
SYNOPSIS
gitfor-each-ref[--count=<count>] [--shell|--perl|--python|--tcl] [(--sort=<key>)…] [--format=<format>] [--include-root-refs] [--points-at=<object>] [--merged[=<object>]] [--no-merged[=<object>]] [--contains[=<object>]] [--no-contains[=<object>]] [(--exclude=<pattern>)…] [--start-after=<marker>] [--stdin| (<pattern>...)]
BESKRIVNING
Iterera över alla referenser som matchar <mönster> och visa dem enligt det angivna <format>, efter att ha sorterat dem enligt den angivna uppsättningen <nyckel>. Om <antal> anges, stoppa efter att så många referenser visats. Interpolerade värden i <format> kan valfritt citeras som strängliteraler i det angivna värdspråket så att de kan utvärderas direkt i det språket.
ALTERNATIV
- <mönster>...
-
Om ett eller flera <mönster>-parametrar anges visas endast referenser som matchar minst ett mönster, antingen med hjälp av
fnmatch(3) eller bokstavligt, i det senare fallet matchande helt eller från början upp till ett snedstreck. -
--stdin -
Listan över mönster läses från standardindata istället för från argumentlistan.
-
--count=<antal> -
Stoppa efter att ha visat <antal> referenser.
-
--sort=<nyckel> -
Sortera på fältnamnet <nyckel>. Använd prefixet
-för att sortera i fallande ordning efter värdet. Om det inte anges användsrefname. Du kan använda alternativet--sort=<nyckel> flera gånger, i vilket fall den sista nyckeln blir primärnyckeln. -
--format[=<format>] -
En sträng som interpolerar %(fältnamn) från en referens som visas och objektet den pekar på. Dessutom återges strängliteralen
%%som%och%xx- därxxär hexadecimalsiffror - återges som tecknet med hexadecimalkodenxx. Till exempel interpolerar%00till \0 (NUL),%09till \t (TAB) och%0atill \n (LF).
Om det inte anges är <format> som standard %(objektnamn) SPC %(objekttyp) TAB %(refnamn).
-
--color[=<när>] -
Respektera alla färger som anges i alternativet
--format. Fältet <när_ måste vara ett avalways,neverellerauto(om <när> saknas, bete sig som omalwayshade angetts). -
--shell -
--perl -
--python -
--tcl -
Om givet, strängar som ersätter platshållarna %(fältnamn) anges, citeras de som strängliteraler som är lämpliga för det angivna värdspråket. Detta är avsett att producera ett skriptlet som direkt kan "utvärderas".
-
--points-at=<objekt> -
Lista endast referenser som pekar på det givna objektet.
-
--merged[=<objekt>] -
Lista endast referenser vars toppar är nåbara från den angivna incheckningen (
HEADom inget annat anges). -
--no-merged[=<objekt>] -
Lista endast referenser vars toppar inte kan nås från <objekt>(
HEADom inget anges). -
--contains[=<objekt>] -
Lista endast referenser som innehåller <objkct>(
HEADom inget anges). -
--no-contains[=<objekt>] -
Lista endast referenser som inte innehåller <objekt> (
HEADom inget anges). -
--ignore-case -
Sortering och filtrering av referenser är inte skiftlägeskänsliga.
-
--omit-empty -
Skriv inte ut en nyrad efter formaterade referenser där formatet expanderar till den tomma strängen.
-
--exclude=<exkluderat-mönster> -
Om ett eller flera
--exclude-alternativ anges visas endast referenser som inte matchar några <exkluderade-mönster>-parametrar. Matchning görs med samma regler som <mönster> ovan. -
--include-root-refs -
Lista rotreferenser (
HEADoch pseudorefs) förutom vanliga referenser. -
--start-after=<markör> -
Tillåter sidindelning av utdata genom att hoppa över referenser upp till och inklusive den angivna markören. Vid sidvisning bör det noteras att referenser kan tas bort, ändras eller läggas till mellan anrop. Utdata ger endast de referenser som följer markören lexikografiskt. Utdata börjar från den första referensen som skulle komma efter markören alfabetiskt. Kan inte användas med alternativen
--sort=<nyckel> eller--stdin, eller argumenten <mönster> för att begränsa referenserna.
FÄLTNAMN
Olika värden från strukturerade fält i refererade objekt kan användas för interpolering i resultatet eller som sorteringsnycklar.
För alla objekt kan följande namn användas:
-
refname -
Namnet på referensen (delen efter
$GIT_DIR/). För ett entydigt kortnamn för referensen, lägg till:short. Alternativetcore.warnAmbiguousRefsanvänds för att välja strikt förkortningsläge. Omlstrip=<n> (rstrip=<n>) läggs till tas <n> snedstrecksseparerade sökvägskomponenter bort från början (slutet) av referensnamnet (t.ex. gör%(refname:lstrip=2) omrefs/tags/footillfoooch%(refname:rstrip=2) gör omrefs/tags/footillrefs). Om <n> är ett negativt tal tas så många sökvägskomponenter bort som behövs från angiven ände för att lämna-<n> sökvägskomponenter (t.ex. gör%(refname:lstrip=-2) omrefs/tags/footilltags/foooch%(refname:rstrip=-1) gör omrefs/tags/footillrefs). När referensen inte har tillräckligt många komponenter blir resultatet en tom sträng vid borttagning med positivt <n>, eller hela referensnamnet vid borttagning med negativt <N>. Inget av detta är ett fel.stripkan användas som synonym förlstrip. -
objecttype -
Objektets typ (
blob,tree,commit,tag). -
objectsize -
Objektets storlek (samma som git cat-file -s rapporter). Lägg till
:diskför att få storleken, i byte, som objektet tar upp på disken. Se anmärkningen om storlekar på disken i avsnittet FÖRBEHÅLL nedan. -
objectname -
Objektnamnet (även kallat SHA-1). För en entydig förkortning av objektnamnet, lägg till
:short. För en förkortning med önskad längd, lägg till:short=<längd>, där minsta längd ärMINIMUM_ABBREV. Längden kan överskridas för att säkerställa unika objektnamn. -
deltabase -
Det här expanderar till objektnamnet för deltbasen för det angivna objektet, om det lagras som en delta. Annars expanderar det till null-objektnamnet (bara nollor).
-
upstream -
Namnet på en lokal referens som kan betraktas som “upstream” för den visade referensen. Respekterar
:short,:lstripoch:rstrippå samma sätt somrefnameovan. Respekterar även:trackför att visa "[ahead N, behind M]" och:trackshortför att visa den korta varianten: ">" (före), "<" (efter), "<>" (före och efter), eller "=" (i synk).:trackskriver också ut "[gone]" när en okänd uppströmsreferens påträffas. Lägg till:track,nobracketför att visa spårningsinformation utan hakparenteser (d.v.s. "ahead N, behind M").För varje fjärrspårad gren
%(upstream) syftar%(upstream:remotename) respektive%(upstream:remoteref) på namnet på fjärren och namnet på den spårade fjärrreferensen. Med andra ord kan den fjärrspårade grenen uppdateras explicit och individuellt genom att använda refspec%(upstream:remoteref):%(upstream) för att hämta från%(upstream:remotename).Har ingen effekt om referensen inte har associerad spårningsinformation. Alla alternativ utom
nobracketär ömsesidigt uteslutande, men om de används tillsammans väljs det sista alternativet. -
push -
Namnet på en lokal referens som representerar
@{push}-platsen för den visade referensen. Respekterar alternativen:short,:lstrip,:rstrip,:track,:trackshort,:remotenameoch:remoterefpå samma sätt somupstream. Ger en tom sträng om ingen@{push}-referens är konfigurerad. -
HEAD -
*omHEADmatchar aktuell referens (den utcheckade grenen), annars ' '. -
color -
Ändra färg på utdata. Följs av
:<färgnamn>, där färgnamn beskrivs under Values i avsnittet "CONFIGURATION FILE" i git-config[1]. Till exempel%(color:boldred). -
align -
Vänster-, mitten- eller högerjustera innehållet mellan
%(align:...) och%(end). "align:" följs avwidth=<width> ochposition=<position> i valfri ordning separerade med kommatecken, där <position> ärleft,rightellermiddle(standard ärleft) och <width> är innehållets totala längd med justering. För korthet kan prefixen "width=" och/eller "position=" utelämnas, och bara <width> respektive <position> användas, t.ex.%(align:<width>,<position>). Om innehållets längd är större än bredden görs ingen justering. Vid användning med--quoteciteras allt mellan%(align:...) och%(end), men vid nästling citeras bara den översta nivån. -
if -
Används som
%(if)...%(then)...%(end) eller%(if)...%(then)...%(else)...%(end). Om det finns en atom med värde eller strängliteral efter%(if) skrivs allt efter%(then) ut. Annars, om atomen%(else) används, skrivs allt efter%(else) ut. Vi ignorerar blanksteg när strängen före%(then) utvärderas; det är användbart när vi använder atomen%(HEAD) som skriver ut antingen "*" eller " " och vi vill tillämpa if-villkoret endast påHEAD-referensen. Lägg till ":equals=<string>" eller ":notequals=<string>" för att jämföra värdet mellan atomerna%(if:...) och%(then) med den angivna strängen. -
symref -
Referensen som den givna symboliska referensen pekar på. Om det inte är en symbolisk referens skrivs inget ut. Respekterar alternativen
:short,:lstripoch:rstrippå samma sätt somrefnameovan. -
signature -
GPG-signaturen för en incheckning.
-
signature:grade -
Visa
-
G -
för en bra (giltig) signatur
-
B -
för en dålig signatur
-
U -
för en bra signatur med okänd giltighet
-
X -
för en bra signatur som har gått ut
-
Y -
för en bra signatur skapad av en nyckel som har gått ut
-
R -
för en bra signatur skapad av en återkallad nyckel
-
E -
om signaturen inte kan kontrolleras (t.ex. saknad nyckel)
-
N -
för ingen signatur.
-
-
signature:signer -
Undertecknaren av GPG-signaturen för en incheckning.
-
signature:key -
Nyckeln till GPG-signaturen för en incheckning.
-
signature:fingerprint -
Fingeravtrycket för GPG-signaturen för en incheckning.
-
signature:primarykeyfingerprint -
Primärnyckelns fingeravtryck för GPG-signaturen för en incheckning.
-
signature:trustlevel -
Förtroendenivån för GPG-signaturen för en incheckning. Möjliga utdata är
ultimate,fully,marginal,neverochundefined. -
worktreepath -
Den absoluta sökvägen till arbetsträdet där referensen är utcheckad, om den är utcheckad i något länkat arbetsträd. Annars tom sträng.
-
ahead-behind:<commit-ish> -
Två heltal, separerade med blanksteg, som visar antalet incheckningar före respektive efter när utdatareferensen jämförs med <committish> som anges i formatet.
-
is-base:<commit-ish> -
I högst en rad visas (<commit-ish>) för att ange den referens som mest sannolikt användes som startpunkt för grenen som skapade <commit-ish>. Valet görs med en heuristik: välj den referens som minimerar antalet incheckningar i förstaföräldrahistoriken för <commit-ish> som inte finns i referensens förstaföräldrahistorik.
Tänk till exempel på följande figur över förstaföräldrahistoriker för flera referenser:
*--*--*--*--*--* refs/heads/A \ \ *--*--*--* refs/heads/B \ \ \ \ * * refs/heads/C \ \ *--* refs/heads/DOm
A,BochChär är de filtrerade referenserna och formatsträngen är%(refname):%(is-base:D), blir utdatanrefs/heads/A: refs/heads/B:(D) refs/heads/C:
Det här beror på att förstaföräldrahistoriken för
Dfår sin tidigaste skärning med förstaföräldrahistorikerna för de filtrerade referenserna i en gemensam förstaförfader tillBochC, och lika fall avgörs av den tidigaste referensen i sorteringsordningen.Observera att denna markör inte visas om förstaföräldrahistoriken för <commit-ish> inte skär förstaföräldrahistorikerna för de filtrerade referenserna.
-
describe[:<option>,...] -
Ett människoläsbart namn, som git-describe[1]; tom sträng för obeskrivbara incheckningar. Strängen
describekan följas av ett kolon och ett eller flera kommaseparerade alternativ.-
tags=<bool-value> -
I stället för att bara ta hänsyn till annoterade taggar, ta även hänsyn till lättviktiga taggar; se motsvarande alternativ i git-describe[1] för detaljer.
-
abbrev=<number> -
Använd minst <number> hexadecimala siffror; se motsvarande alternativ i git-describe[1] för detaljer.
-
match=<mönster> -
Ta bara hänsyn till taggar som matchar
glob(7)-<pattern>, exklusive prefixetrefs/tags/; se motsvarande alternativ i git-describe[1] för detaljer. -
exclude=<mönster> -
Ta inte hänsyn till taggar som matchar
glob(7)-<mönster>, exklusive prefixetrefs/tags/; se motsvarande alternativ i git-describe[1] för detaljer.
-
In addition to the above, for commit and tag objects, the header field names (tree, parent, object, type, and tag) can be used to specify the value in the header field. Fields tree and parent can also be used with modifier :short and :short=<length> just like objectname.
För inchecknings- och taggobjekt motsvarar specialfälten creatordate och creator lämpligt datum eller namn-e-post-datum-tupel från fälten committer eller tagger, beroende på objekttyp. Dessa är avsedda för arbete med en blandning av annoterade och lättviktiga taggar.
För taggobjekt expanderas ett fieldname med prefixet * till fieldname-värdet för det skalade objektet, snarare än till själva taggobjektet.
Fält som har en namn-e-post-datum-tupel som värde (author, committer och tagger) kan få suffixen name, email och date för att extrahera den namngivna komponenten. För e-postfält (authoremail, committeremail och taggeremail) kan :trim läggas till för att få e-postadressen utan vinkelparenteser, och :localpart för att få delen före @-symbolen i den trimmade e-postadressen. Utöver detta kan alternativet :mailmap samt motsvarande :mailmap,trim och :mailmap,localpart användas (ordningen spelar ingen roll) för att hämta namn- och e-postvärden enligt .mailmap-filen eller enligt filen som anges i konfigurationsvariabeln mailmap.file eller mailmap.blob (se gitmailmap[5]).
Rådata i ett objekt är raw.
Observera att --format=%(raw) inte kan användas med --python, --shell, --tcl, eftersom sådana språk kanske inte stöder godtycklig binärdata i sina strängvariabeltyper.
Meddelandet i en incheckning eller ett taggobjekt är contents, där contents:<part> kan användas för att extrahera olika delar:
-
contents:size -
Storleken i byte för inchecknings- eller taggmeddelandet.
-
contents:subject -
Det första stycket i meddelandet, som vanligtvis är en enda rad, tas som "ämne" för inchecknings- eller taggmeddelandet. I stället för
contents:subjectkan fältetsubjectockså användas för att få samma resultat.:sanitizekan läggas till isubjectför en ämnesrad som passar filnamnet. -
contents:body -
Resten av inchecknings- eller taggmeddelandet som följer efter "subject".
-
contents:signature -
Taggens valfria GPG-signatur.
-
contents:lines=<n> -
Meddelandets första <n> rader.
Dessutom hämtas trailers, så som de tolkas av git-interpret-trailers[1], som trailers[:<option>,...] (eller med det historiska aliaset contents:trailers[:<option>,...]). Giltiga <option>-värden finns i avsnittet trailers i git-log[1].
För sorteringsändamål sorteras fält med numeriska värden i numerisk ordning (objectsize, authordate, committerdate, creatordate, taggerdate). Alla andra fält används för sortering enligt sin bytevärdesordning.
Det finns också ett alternativ för att sortera efter versioner; det kan göras med fältnamnet version:refname eller aliaset v:refname.
I samtliga fall orsakar ett fältnamn som syftar på ett fält som inte är tillämpligt för objektet som referensen pekar på inget fel. Det returnerar i stället en tom sträng.
Som specialfall för datumfälten kan du ange ett datumformat genom att lägga till : följt av datumformatets namn (se vilka värden alternativet --date till git-rev-list[1] accepterar). Om detta format anges i en --sort-nyckel sorteras referenser enligt det formaterade strängvärdets byteordning, inte efter det underliggande tidsstämpelvärdets numeriska värde.
Vissa atomer, som %(align) och %(if), kräver alltid ett matchande %(end). Vi kallar dem "öppnande atomer" och betecknar dem ibland som %($open).
När citering specifik för ett skriptspråk är aktiv utvärderas allt mellan en öppnande atom på toppnivå och dess matchande %(end) enligt den öppnande atomens semantik, och endast resultatet från toppnivån citeras.
EXEMPEL
Ett exempel som direkt producerar formaterad text. Visa de tre senaste taggade incheckningarna:
#!/bin/sh git for-each-ref --count=3 --sort='-*authordate' \ `--format='From: %(*authorname) %(*authoremail) Subject: %(*subject) Date: %(*authordate) Ref: %(*refname) %(*body) ' 'refs/tags'
Ett enkelt exempel som visar användning av eval i skalet på utdatan och demonstrerar --shell. Lista prefixen för alla HEAD-referenser:
#!/bin/sh git for-each-ref --shell --format="ref=%(refname)" refs/heads | \ while read entry do eval "$entry" echo `dirname $ref` done
En något mer omfattande rapport om taggar, som visar att formatet kan vara ett helt skript:
#!/bin/sh
fmt='
r=%(refname)
t=%(*objecttype)
T=${r#refs/tags/}
o=%(*objectname)
n=%(*authorname)
e=%(*authoremail)
s=%(*subject)
d=%(*authordate)
b=%(*body)
kind=Tag
if test "z$t" = z
then
# could be a lightweight tag
t=%(objecttype)
kind="Lightweight tag"
o=%(objectname)
n=%(authorname)
e=%(authoremail)
s=%(subject)
d=%(authordate)
b=%(body)
fi
echo "$kind $T points at a $t object $o"
if test "z$t" = zcommit
then
echo "The commit was authored by $n $e
at $d, and titled
$s
Its message reads as:
"
echo "$b" | sed -e "s/^/ /"
echo
fi
'
eval=`git for-each-ref --shell --format="$fmt" \
--sort='*objecttype' \
--sort=-taggerdate \
refs/tags`
eval "$eval"
Ett exempel som visar användningen av %(if)...%(then)...%(else)...%(end). Detta prefixerar den aktuella grenen med en stjärna.
git for-each-ref --format="%(if)%(HEAD)%(then)* %(else) %(end)%(refname:short)" refs/heads/
Ett exempel som visar användningen av %(if)...%(then)...%(end). Detta skriver ut författarnamnet, om det finns.
git for-each-ref --format="%(refname)%(if)%(authorname)%(then) Authored by: %(authorname)%(end)"
FÖRBEHÅLL
Observera att storlekarna på objekten på disken rapporteras korrekt, men försiktighet bör iakttas när man drar slutsatser om vilka referenser eller objekt som är ansvariga för diskanvändningen. Storleken på ett packat icke-deltaobjekt kan vara mycket större än storleken på objekt som deltar mot det, men valet av vilket objekt som är basen och vilket som är deltan är godtyckligt och kan ändras under en ompackning.
Observera också att flera kopior av ett objekt kan finnas i objektdatabasen; i det här fallet är det odefinierat vilken kopias storlek eller deltabas som kommer att rapporteras.
NOTERINGAR
När man kombinerar flera --contains- och --no-contains-filter visas endast referenser som innehåller minst en av --contains-commits och inte innehåller någon av --no-contains-incheckningar.
När man kombinerar flera --merged- och --no-merged-filter visas endast referenser som är nåbara från minst en av --merged-commits och från ingen av --no-merged-incheckningar.
GIT
En del av git[1]-sviten