Svenska ▾ Topics ▾ Latest version ▾ git-cat-file last updated in 2.52.0

NAMN

git-cat-file - Tillhandahåller innehåll eller detaljer om förvars-objekt

SYNOPSIS

git cat-file <typ> <objekt>
git cat-file (-e | -p | -t | -s) <objekt>
git cat-file (--textconv | --filters)
	     [<rev>:<sökväg|trädlikt> | --path=<sökväg|trädlikt> <rev>]
git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]
	     [--buffer] [--follow-symlinks] [--unordered]
	     [--textconv | --filters] [-Z]

BESKRIVNING

Mata ut innehållet eller andra egenskaper, såsom storlek, typ eller delta-information, för ett eller flera objekt.

Det här kommandot kan fungera i två lägen, beroende på om ett alternativ från --batch-familjen är specificerat.

I icke-satsläge tillhandahåller kommandot information om ett objekt som namnges på kommandoraden.

I satsläge läses argument från standardindata.

ALTERNATIV

<objekt>

Namnet på det objekt som ska visas. För en mer komplett lista över sätt att stava objektnamn, se avsnittet "SPECIFICERING AV REVISIONER" i gitrevisions[7].

-t

Istället för innehållet, visa objekttypen som identifieras av <objekt>.

-s

Istället för innehållet, visa objektstorleken identifierad av <objekt>. Om den används med alternativet --use-mailmap, visas storleken på det uppdaterade objektet efter att identer ersatts med hjälp av mailmap-mekanismen.

-e

Avsluta med status noll om <objekt> finns och är ett giltigt objekt. Om <objekt> har ett ogiltigt format, avsluta med status som inte är noll och generera ett felmeddelande vid stderr.

-p

Skriv ut innehållet i <objekt> baserat på dess typ.

<typ>

Vanligtvis matchar detta den verkliga typen av <objekt>, men det är också tillåtet att fråga efter en typ som trivialt kan avrefereras från den givna <objekt>. Ett exempel är att fråga efter ett "träd" där <objekt> är ett incheckning-objekt som innehåller det, eller att fråga efter en "blob" där <objekt> är ett taggobjekt som pekar på det.

--mailmap
--no-mailmap
--use-mailmap
--no-use-mailmap

Använd mailmap-filen för att mappa författar-, incheckare- och taggarnamn och e-postadresser till kanoniska riktiga namn och e-postadresser. Se git-shortlog[1].

--textconv

Visa innehållet så som det har transformerats av ett textconv filtret. I det här fallet måste <objekt> ha formen <trädlikt>:<sökväg> eller :<sökväg> för att filtret ska kunna tillämpas på innehållet som är registrerat i indexet vid <sökväg>.

--filters

Visa innehållet så som det konverterats av filtren som konfigurerats i den aktuella arbetskatalogen för det givna <sökvägen> (dvs. smetfilter, konvertering vid radslut, etc.). I det här fallet måste <objekt> vara av formen <trädlikt>:<sökväg> eller :<sökväg>.

--filter=<filter-spec>
--no-filter

Uteslut objekt från listan över utskrivna objekt. Detta kan bara användas i kombination med ett av satslägena. Undantagna objekt som uttryckligen har begärts via något av satslägena som läser objekt via standardinmatning (--batch, --batch-check) kommer att rapporteras som "filtrerade". Undantagna objekt i --batch-all-objects-läge kommer inte att skrivas ut alls. <filter-spec> kan vara ett av följande:

Formen --filter=blob:none utelämnar alla blobbar.

Formen --filter=blob:limit=<n>[kmg] utelämnar blobbar med en storlek på minst n byte eller enheter. n kan vara noll. Suffixen k, m och g kan användas för att namnge enheter i KiB, MiB eller GiB. Till exempel är blob:limit=1k samma sak som blob:limit=1024.

Formen --filter=object:type=(tag|commit|tree|blob) utelämnar alla objekt som inte är av den begärda typen.

--path=<sökväg>

För användning med --textconv eller --filters, för att tillåta att ett objektnamn och en sökväg anges separat, t.ex. när det är svårt att lista ut vilken version blobben kommer från.

--batch
--batch=<format>

Skriv ut objektinformation och innehåll för varje objekt som anges på stdin. Får inte kombineras med andra alternativ eller argument förutom --textconv, --filters eller --use-mailmap.

  • När det används med --textconv eller --filters måste inmatningsraderna ange sökvägen, separerade med blanktecken. Se avsnittet SATS UTMATNING nedan för mer information.

  • När det används med --use-mailmap, för incheckning- och tagg-objekt, visar innehållsdelen av utdata de identiteter som ersatts med mailmap-mekanismen, medan informationsdelen av utdata visar objektets storlek som om det faktiskt registrerade ersättningsidentiteterna.

--batch-check
--batch-check=<format>

Skriv ut objektinformation för varje objekt som anges på stdin. Får inte kombineras med andra alternativ eller argument förutom --textconv, --filters eller --use-mailmap.

  • När det används med --textconv eller --filters måste inmatningsraderna Ange sökvägen, separerad med blanktecken. Se avsnittet SATS UTMATNING nedan för mer information.

  • När det används med --use-mailmap, för incheckning- och tagg-objekt, visar den utskrivna objektinformationen objektets storlek som om identiteterna som registrerats i det ersattes av mailmap-mekanismen.

--batch-command
--batch-command=<format>

Ange ett kommandoläge som läser kommandon och argument från stdin. Får endast kombineras med --buffer, --textconv, --use-mailmap eller --filters.

  • När det används med --textconv eller --filters måste inmatningsraderna ange sökvägen, separerade med blanktecken. Se avsnittet SATS UTMATNING nedan för mer information.

  • När det används med --use-mailmap, för incheckning- och tagg-objekt, visar kommandot contents de identiteter som ersatts med mailmap-mekanismen, medan kommandot info visar objektets storlek som om det faktiskt registrerade ersättningsidentiteterna.

--batch-command känner igen följande kommandon:

contents <objekt>

Skriv ut objektinnehållet för objektreferensen <objekt>. Detta motsvarar utdata från --batch.

info <objekt>

Skriv ut objektinformation för objektreferensen <objekt>. Detta motsvarar utdata från --batch-check.

flush

Används med --buffer för att utföra alla föregående kommandon som utfärdats sedan början eller sedan den senaste spolningen utfördes. När --buffer används kommer ingen utmatning förrän en flush utförs. När --buffer inte används spolas kommandona varje gång utan att flush utförs.

--batch-all-objects

Istället för att läsa en lista med objekt på stdin, utför den begärda sats-operationen på alla objekt i förvaret och eventuella alternativa objektlager (inte bara nåbara objekt). Kräver att --batch eller --batch-check anges. Som standard besöks objekten i ordning sorterade efter deras hash-värden; se även --unordered nedan. Objekt presenteras som de är, utan att respektera "replace"-mekanismen i git-replace[1].

--buffer

Normalt sett rensas satsutdata efter att varje objekt har matats ut, så att en process interaktivt kan läsa och skriva från cat-file. Med det här alternativet använder utdata normal stdio-buffring; detta är mycket effektivare när --batch-check eller --batch-command anropas på ett stort antal objekt.

--unordered

När --batch-all-objects används, besök objekt i en ordning som kan vara mer effektiv för att komma åt objektinnehållet än hashordning. De exakta detaljerna i ordningen är ospecificerade, men om du inte behöver en specifik ordning bör detta generellt resultera i snabbare utdata, särskilt med --batch. Observera att cat-file fortfarande bara visar varje objekt en gång, även om det lagras flera gånger i arkivet.

Med --batch eller --batch-check, följ symboliska länkar inuti förvaret när du begär objekt med utökade SHA-1-uttryck av formen tree-ish:path-in-tree. Istället för att tillhandahålla utdata om själva länken, tillhandahålla utdata om det länkade objektet. Om en symbolisk länk pekar utanför trädet (t.ex. en länk till /foo eller en rotnivålänk till ../foo), kommer den del av länken som finns utanför trädet att skrivas ut.

Det här alternativet fungerar (för närvarande) inte korrekt när ett objekt i indexet anges (t.ex. :link istället för HEAD:link) snarare än ett i trädet.

Det här alternativet kan (för närvarande) inte användas om inte --batch eller --batch-check används.

Tänk dig till exempel ett git-förvar som innehåller:

f: en fil som innehåller "hej\n"
länk: en symlink till f
kat/länk: en symlink till../f
plänk: en symlink till../f
alänk: en symlink till /etc/passwd

För en vanlig fil f skulle echo HEAD:f | git cat-file --batch skriva ut

ce013625030ba8dba906f756967f9e9ca394464a blob 6

Och echo HEAD:link | git cat-file --batch --follow-symlinks skulle skriva ut samma sak, liksom HEAD:kat/länk, eftersom båda pekar på HEAD:f.

Utan --follow-symlinks skulle dessa skriva ut data om själva symboliska länken. I fallet med HEAD:länk skulle du se

4d1ae35ba2c8ec712fa2a379db44ad639ca277bd blob 1

Både plänk och alänk pekar utanför trädet, så de skulle skriva ut:

symlink 4
../f
symlink 11
/etc/passwd
-Z

Endast meningsfullt med --batch, --batch-check eller --batch-command; indata och utdata är NUL-avgränsade istället för nyradsavgränsade.

-z

Endast meningsfullt med --batch, --batch-check eller --batch-command; inmatningen är NUL-avgränsad istället för nyradsavgränsad. Detta alternativ är föråldrat till förmån för -Z eftersom utmatningen annars kan vara tvetydig.

UTMATNING

Om -t anges, en av <typ>.

Om -s anges, storleken på <objekt> i byte.

Om -e anges, ingen utdata, såvida inte <objekt> är felaktigt formaterat.

Om -p anges, skrivs innehållet i <objekt> snyggt formaterat.

Om <typ> anges, returneras det råa (men okomprimerade) innehållet i <objekt>.

SATS UTMATNING

Om --batch eller --batch-check anges, kommer cat-file att läsa objekt från stdin, ett per rad, och skriva ut information om dem i samma ordning som de har lästs. Som standard, betraktas hela raden som ett objekt, som om den matades till git-rev-parse[1].

När --batch-command ges, kommer cat-file att läsa kommandon från stdin, ett per rad, och skriva ut information baserat på det givna kommandot. Med --batch-command kommer info-kommandot följt av ett objekt att skriva ut information om objektet på samma sätt som --batch-check skulle göra, och contents-kommandot följt av ett objekt skriver ut innehållet på samma sätt som --batch skulle göra.

Du kan ange informationen som visas för varje objekt genom att använda ett anpassat <format>. <format> kopieras bokstavligen till stdout för varje objekt, med platshållare av formen %(atom) expanderade, följt av en nyrad. De tillgängliga atomerna är:

objectname

Den fullständiga hexadecimala representationen av objektnamnet.

objecttype

Objektets typ (samma som cat-file -t rapporterar).

objectmode

Om det angivna objektet har lägesinformation (t.ex. ett träd eller en indexpost), uttrycks läget som ett oktalt heltal. Annars en tom sträng.

objectsize

Objektets storlek, i byte, (samma som cat-file -s rapporterar).

objectsize:disk

Storleken, i byte, som objektet tar upp på disken. Se anmärkningen om storlekar på disken i avsnittet "FÖRBEHÅLL" nedan.

deltabase

Om objektet lagras som en delta på disk, expanderas detta till den fullständiga hexadecimala representationen av deltabasobjektets namn. Annars expanderas det till null-OID (bara nollor). Se FÖRBEHÅLL nedan.

rest

Om denna atom används i utdatasträngen delas indatalinjerna vid den första blankstegsgränsen. Alla tecken före det mellanslaget anses vara objektnamnet; Tecken efter den första omgången av blanksteg (dvs. "resten" av raden) matas ut istället för %(rest)-atomen.

If no format is specified, the default format is %(objectname) %(objecttype) %(objectsize).

Om --batch anges, eller om --batch-command används med kommandot contents, följs objektinformationen av objektinnehållet (bestående av %(objectsize) byte), följt av en ny rad.

Till exempel skulle --batch utan ett anpassat format producera:

<oid> SP <typ> SP <storlek> LF
<innehåll> LF

Medan --batch-check='%(objectname) %(objecttype) skulle producera:

<oid> SP <typ> LF

Om ett namn anges på stdin som inte kan matchas med ett objekt i förvaret, kommer cat-file att ignorera alla anpassade format och skriva ut:

<objekt> SP missing LF

Om ett namn anges på stdin som filtreras bort via --filter=, så kommer cat-file att ignorera alla anpassade format och skriva ut:

<objekt> SP excluded LF

Om ett namn anges som kan referera till mer än ett objekt (en tvetydig kort sha), kommer cat-file att ignorera alla anpassade format och skriva ut:

<objekt> SP ambiguous LF

Om ett namn anges som refererar till en undermodulpost i ett träd och målobjektet inte finns i förvaret, kommer cat-file att ignorera alla anpassade format och skriva ut (med undermodulens objekt-ID):

<oid> SP submodule LF

Om --follow-symlinks används, och en symlänk i arkivet pekar utanför arkivet, så kommer cat-file att ignorera alla anpassade format och skriva ut:

symlink SP <storlek> LF
<symlänk> LF

Symbollänken kommer antingen att vara absolut (börjar med ett /) eller relativ till trädroten. Om till exempel dir/link pekar på ../../foo, så kommer <symlänk> att vara ../foo. <storlek> är storleken på symbollänken i byte.

Om --follow-symlinks används kommer följande felmeddelanden att visas:

<objekt> SP missing LF

skrivs ut när den initialt begärda symboliska länken inte finns.

dangling SP <storlek> LF
<objekt> LF

skrivs ut när den initiala symboliska länken finns, men något som den (transitivt-av) pekar på inte gör det.

loop SP <storlek> LF
<objekt> LF

skrivs ut för symlänkslingor (eller andra symlänkar som kräver mer än 40 länkupplösningar för att lösas).

notdir SP <storlek> LF
<objekt> LF

skrivs ut när en fil används som katalognamn under symlänksupplösning.

Alternativt, när -Z skickas, ersätts radmatningarna i något av exemplen ovan med NUL-terminatorer. Detta säkerställer att utdata kommer att vara parsbar om själva utdata skulle innehålla en radmatning och därför rekommenderas för skriptändamål.

FÖRBEHÅLL

Note that the sizes of objects on disk are reported accurately, but care should be taken in drawing conclusions about which refs or objects are responsible for disk usage. The size of a packed non-delta object may be much larger than the size of objects which delta against it, but the choice of which object is the base and which is the delta is arbitrary and is subject to change during a repack.

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.

GIT

En del av git[1]-sviten