git-cat-file(1)

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

Mall:manpage

NAMN

git-cat-file - Tillhandahåll innehåll eller detaljer om arkivobjekt

SYNOPSIS

git cat-file <typ> <objekt> git cat-file (-e | -p) <objekt> git cat-file (-t | -s) [--allow-unknown-type] <objekt> git cat-file (--textconv | --filters)

            [<rev>:<sökväg|träd-ish> | --path=<sökväg|träd-ish> <rev>]

git cat-file (--batch | --batch-check | --batch-command) [--batch-all-objects]

            [--buffer] [--follow-symlinks] [--unordered]
            [--textconv | --filters] [-Z]

BESKRIVNING

Skriv ut innehållet eller andra egenskaper som storlek, typ eller deltainformation för ett eller flera objekt.

Detta kommando kan fungera i två lägen, beroende på om ett alternativ från --batch-familjen anges.

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

I batchläge läses argument från standardinmatningen.

ALTERNATIV

  • <objekt>
Namnet på objektet som ska visas. För en mer fullständig lista över
sätt att stava objektnamn, se avsnittet "SPECIFYING REVISIONS" 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 som identifieras av

<objekt>. Om det används med alternativet --use-mailmap visas storleken på det uppdaterade objektet efter att identiteter ersatts med hjälp av mailmap-mekanismen.

  • -e
Avsluta med status noll om <objekt> existerar och är ett giltigt
objekt. Om <objekt> har ett ogiltigt format, avsluta med status
nollskild och skriv ut ett felmeddelande på stderr.
  • -p
Skriv ut innehållet i <objekt> på ett snyggt sätt baserat på dess

typ.

  • <typ>
Vanligtvis matchar detta den verkliga typen av <objekt> men att

begära en typ som trivialt kan derefereras från det givna <objekt> är också tillåtet. Ett exempel är att begära ett "träd" med <objekt> som ett commit-objekt som innehåller det, eller att begära en "blob" med <objekt> som ett taggobjekt som pekar på det.

  • --[no-]mailmap, --[no-]use-mailmap
Använd mailmap-fil för att mappa namn och e-postadresser för

författare, committer och taggare till kanoniska riktiga namn och e-postadresser. Se git-shortlog(1).

  • --textconv
Visa innehållet som transformerats av ett textkonverteringsfilter. I

detta fall måste <objekt> ha formatet <träd-ish><kolon>'<sökväg>', eller <kolon>'<sökväg>' för att tillämpa filtret på innehållet som registrerats i indexet på <sökväg>.

  • --filters
Visa innehållet som konverterats av de filter som konfigurerats i den

aktuella arbetskopian för den givna <sökväg> (dvs. smudge-filter, radslutskonvertering etc.). I detta fall måste <objekt> ha formatet <träd-ish><kolon>'<sökväg>, eller <kolon>'<sökväg>.

  • --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 räkna ut från vilken revision bloben kom.

  • --batch, --batch=<format>
Skriv ut objektinformation och innehåll för varje objekt som anges på

stdin. Får inte kombineras med några andra alternativ eller argument förutom --textconv, --filters eller --use-mailmap.

* Vid användning med --textconv eller --filters måste

inmatningsraderna ange sökvägen, separerad med blanksteg. Se avsnittet BATCH OUTPUT nedan för detaljer.

* Vid användning med --use-mailmap visar innehållsdelen av

utmatningen för commit- och taggobjekt de identiteter som ersatts med mailmap-mekanismen, medan informationsdelen av utmatningen visar objektets storlek som om det faktiskt registrerade de ersatta identiteterna.

  • --batch-check, --batch-check=<format>
Skriv ut objektinformation för varje objekt som anges på stdin. Får

inte kombineras med några andra alternativ eller argument förutom --textconv, --filters eller --use-mailmap.

* Vid användning med --textconv eller --filters måste

inmatningsraderna ange sökvägen, separerad med blanksteg. Se avsnittet BATCH OUTPUT nedan för detaljer.

* Vid användning med --use-mailmap visar den utskrivna

objektinformationen för commit- och taggobjekt objektets storlek som om de identiteter som registrerats i det ersattes av mailmap-mekanismen.

  • --batch-command, --batch-command=<format>
Gå in i ett kommandoläge som läser kommandon och argument från stdin.

Får endast kombineras med --buffer, --textconv, --use-mailmap eller --filters.

* Vid användning med --textconv eller --filters måste

inmatningsraderna ange sökvägen, separerad med blanksteg. Se avsnittet BATCH OUTPUT nedan för detaljer.

* Vid användning med --use-mailmap visar kommandot contents

för commit- och taggobjekt de identiteter som ersatts med mailmap-mekanismen, medan kommandot info visar objektets storlek som om det faktiskt registrerade de ersatta identiteterna.

--batch-command känner igen följande kommandon:
contents <objekt>
Skriv ut objektinnehåll för objektreferensen <objekt>. Detta

motsvarar utmatningen från --batch.

info <objekt>
Skriv ut objektinformation för objektreferensen <objekt>. Detta

motsvarar utmatningen från --batch-check.

flush
Används med --buffer för att exekvera alla föregående

kommandon som utfärdats sedan början eller sedan den senaste flush utfärdades. När --buffer används kommer ingen utmatning förrän en flush utfärdas. När --buffer inte används spolas kommandon varje gång utan att flush utfärdas.

  • --batch-all-objects
Istället för att läsa en lista med objekt på stdin, utför den begärda

batchoperationen på alla objekt i arkivet 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 hashvärden; se även --unordered nedan. Objekt presenteras som de är, utan hänsyn till "replace"-mekanismen i git-replace(1).

  • --buffer
Normalt spolas batchutmatningen efter att varje objekt har skrivits ut,

så att en process interaktivt kan läsa och skriva från cat-file. Med detta alternativ använder utmatningen normal stdio-buffering; detta är mycket effektivare vid anrop av --batch-check eller --batch-command 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 åtkomst av objektinnehåll än hash-ordning. De exakta detaljerna i ordningen är ospecificerade, men om du inte behöver en specifik ordning bör detta i allmänhet resultera i snabbare utmatning, 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.

  • --allow-unknown-type
Tillåt -s eller -t att fråga trasiga/korrupta objekt av

okänd typ.

  • --follow-symlinks
Med --batch eller --batch-check följ symlänkar inuti

arkivet vid begäran av objekt med utökade SHA-1-uttryck av formen träd-ish:sökväg-i-träd. Istället för att tillhandahålla utmatning om själva länken, tillhandahåll utmatning om det länkade objektet. Om en symlänk pekar utanför träd-ish (t.ex. en länk till /foo eller en länk på rotnivå till ../foo), skrivs den del av länken som ligger utanför trädet ut.

Detta alternativ fungerar (för närvarande) inte korrekt när ett objekt

i indexet anges (t.ex. <kolon>länk istället för HEAD:länk) snarare än ett i trädet.

Detta alternativ kan (för närvarande) inte användas om inte --batch

eller --batch-check används.

Betrakta till exempel ett git-arkiv som innehåller:
f: en fil som innehåller "hello\n"
link: en symlänk till f
dir/link: en symlänk till ../f
plink: en symlänk till ../f
alink: en symlänk 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:dir/link, eftersom båda pekar på HEAD:f.

Utan --follow-symlinks skulle dessa skriva ut data om själva

symlänken. I fallet med HEAD:link skulle du se

4d1ae35ba2c8ec712fa2a379db44ad639ca277bd blob 1
Både plink och alink pekar utanför trädet, så de skulle
  respektive skriva ut:
symlink 4
../f
symlink 11
/etc/passwd
  • -Z
Endast meningsfullt med --batch, --batch-check eller

--batch-command; inmatning och utmatning är NUL-avgränsad istället för radmatningsavgränsad.

  • -z
Endast meningsfullt med --batch, --batch-check eller

--batch-command; inmatningen är NUL-avgränsad istället för radmatningsavgrä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 utmatning, om inte <objekt> är felaktigt formaterat. Om -p anges, skrivs innehållet i <objekt> ut på ett snyggt sätt. Om <typ> anges, returneras det råa (om än okomprimerade) innehållet i <objekt>.

BATCH-UTMATNING

Om --batch eller --batch-check anges läser cat-file objekt från stdin, ett per rad, och skriver ut information om dem i samma ordning som de har lästs. Som standard betraktas hela raden som ett objekt, som om det matades till git-rev-parse(1).

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

Du kan specificera den information 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 ny rad. De tillgängliga atomerna är:

objectname::

 Den fullständiga hexadecimala representationen av objektnamnet.

objecttype::

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

objectsize::

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

objectsize:disk::

 Storleken i byte som objektet upptar på disken. Se noten om storlekar
 på disken i avsnittet CAVEATS nedan.

deltabase::

 Om objektet lagras som en delta på disken expanderar detta till den
 fullständiga hexadecimala representationen av delta-basobjektets namn.
 Annars expanderar det till null-OID (alla nollor). Se CAVEATS
 nedan.

rest::

 Om denna atom används i utmatningssträngen delas inmatningsraderna vid
 den första blankstegsgränsen. Alla tecken före det blanksteget
 betraktas som objektnamnet; tecken efter den första sekvensen av
 blanksteg (dvs. "resten" av raden) skrivs ut i stället för %(rest)
 -atomen.

Om inget format anges är standardformatet %(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 lösas till ett objekt i arkivet kommer cat-file att ignorera alla anpassade format och skriva ut:

   <objekt> SP missing 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 --follow-symlinks används och en symlänk i arkivet pekar utanför arkivet kommer cat-file att ignorera alla anpassade format och skriva ut:

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

Symlänken kommer antingen att vara absolut (börjar med ett /') eller relativ till trädets rot. Om till exempel dir/link pekar på ../../foo, kommer <symlänk> att vara ../foo. <storlek> är symlänkens storlek i byte.

följande felmeddelanden:

   <objekt> SP missing LF

skrivs ut när den initiala symlänken som begärdes inte existerar.

   dangling SP <storlek> LF
   <objekt> LF

skrivs ut när den initiala symlänken existerar, men något som den (transitivt) pekar på inte existerar.

   loop SP <storlek> LF
   <objekt> LF

skrivs ut för symlänk-loopar (eller alla 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 ett katalognamn under symlänk-upplösning.

Alternativt, när -Z skickas, ersätts radmatningarna i alla ovanstående exempel med NUL-terminatorer. Detta säkerställer att utmatningen kommer att vara parsbar om utmatningen i sig skulle innehålla en radmatning och rekommenderas därför för skriptändamål.

CAVEATS

Observera att storlekarna på objekt på disken rapporteras korrekt, men försiktighet bör iakttas vid dragning av slutsatser om vilka referenser eller objekt som är ansvariga för diskanvändningen. Storleken på ett packat icke-delta-objekt kan vara mycket större än storleken på objekt som deltar mot det, men valet av vilket objekt som är bas och vilket som är delta är godtyckligt och kan komma att ändras under en ompackning.

Observera också att flera kopior av ett objekt kan finnas i objektdatabasen; i detta fall är det odefinierat vilken kopias storlek eller delta-bas som kommer att rapporteras.

GIT

Del av git(1)-sviten

KOLOFON

Den här sidan är en del av projektet git (Git distribuerat versionshanteringssystem). Information om projektet finns på <⟨http://git-scm.com/⟩>. Om du har en felrapport för den här manualsidan, se <⟨http://git-scm.com/community⟩>. Den här sidan hämtades från projektets uppströms Git-arkiv <⟨https://github.com/git/git.git⟩> den 2025-02-02. (Vid den tidpunkten var datumet för den senast hittade commiten i arkivet 2025-01-31.) Om du upptäcker några renderingsproblem i den här HTML-versionen av sidan, eller om du tror att det finns en bättre eller mer aktuell källa för sidan, eller om du har korrigeringar eller förbättringar av informationen i den här KOLOFONEN (som *inte* är en del av den ursprungliga manualsidan), skicka ett e-postmeddelande till man-pages@man7.org

Sidslut

Orginalhemsidan på Engelska https://man7.org/linux/man-pages/man1/git-cat-file.1.html


Det här är en maskinöversättning av Linux man sidor till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp som har sponsrat Linux.se med webbhotell.