Svenska ▾ Topics ▾ Latest version ▾ git-for-each-ref last updated in 2.52.0

NAMN

git-for-each-ref - Skriv ut information om varje referens

SYNOPSIS

git for-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änds refname. 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är xx är hexadecimalsiffror - återges som tecknet med hexadecimalkoden xx. Till exempel interpolerar %00 till \0 (NUL), %09 till \t (TAB) och %0a till \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 av always, never eller auto (om <när> saknas, bete sig som om always hade 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 (HEAD om inget annat anges).

--no-merged[=<objekt>]

Lista endast referenser vars toppar inte kan nås från <objekt>(HEAD om inget anges).

--contains[=<objekt>]

Lista endast referenser som innehåller <objkct>(HEAD om inget anges).

--no-contains[=<objekt>]

Lista endast referenser som inte innehåller <objekt> (HEAD om 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 (HEAD och 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. Alternativet core.warnAmbiguousRefs används för att välja strikt förkortningsläge. Om lstrip=<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) om refs/tags/foo till foo och %(refname:rstrip=2) gör om refs/tags/foo till refs). 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) om refs/tags/foo till tags/foo och %(refname:rstrip=-1) gör om refs/tags/foo till refs). 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.

strip kan användas som synonym för lstrip.

objecttype

Objektets typ (blob, tree, commit, tag).

objectsize

Objektets storlek (samma som git cat-file -s rapporter). Lägg till :disk fö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 är MINIMUM_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, :lstrip och :rstrip på samma sätt som refname ovan. Respekterar även :track för att visa "[ahead N, behind M]" och :trackshort för att visa den korta varianten: ">" (före), "<" (efter), "<>" (före och efter), eller "=" (i synk). :track skriver också ut "[gone]" när en okänd uppströmsreferens påträffas. Lägg till :track,nobracket fö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, :remotename och :remoteref på samma sätt som upstream. Ger en tom sträng om ingen @{push}-referens är konfigurerad.

HEAD

* om HEAD matchar 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:bold red).

align

Vänster-, mitten- eller högerjustera innehållet mellan %(align:...) och %(end). "align:" följs av width=<width> och position=<position> i valfri ordning separerade med kommatecken, där <position> är left, right eller middle (standard är left) 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 --quote citeras 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, :lstrip och :rstrip på samma sätt som refname ovan.

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, never och undefined.

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/D

Om A, B och C här är de filtrerade referenserna och formatsträngen är %(refname):%(is-base:D), blir utdatan

refs/heads/A:
refs/heads/B:(D)
refs/heads/C:

Det här beror på att förstaföräldrahistoriken för D får sin tidigaste skärning med förstaföräldrahistorikerna för de filtrerade referenserna i en gemensam förstaförfader till B och C, 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 describe kan 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 prefixet refs/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 prefixet refs/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.

raw:size

Storleken på objektets rådata.

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:subject kan fältet subject också användas för att få samma resultat. :sanitize kan läggas till i subject fö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.

SE ÄVEN

GIT

En del av git[1]-sviten