Ce face git cat-file
Git păstrează totul ca obiecte identificate prin hash: blob (conținutul unui fișier), tree (un director), commit și tag (eticheta adnotată). git cat-file îți arată direct aceste obiecte și este cel mai bun mod de a înțelege cum funcționează Git „pe dinăuntru”.
Cu -p afișezi conținutul într-o formă lizibilă, cu -t afli tipul obiectului, iar cu -s mărimea în octeți. Poți folosi și expresii ca HEAD^{tree} sau HEAD:cale/fisier.txt în loc de hash.
Opțiuni și argumente
| Opțiune / Parametru | Descriere |
|---|---|
-p |
Afișează conținutul obiectului într-un format ușor de citit. |
-t |
Afișează tipul obiectului: blob, tree, commit sau tag. |
-s |
Afișează mărimea obiectului, în octeți. |
-e |
Nu afișează nimic; codul de ieșire este 0 dacă obiectul există. |
--batch, --batch-check |
Citește nume de obiecte de la intrarea standard (folosit în scripturi). |
Exemple
Exemplul 1: Cum arată un commit în baza de date Git
Un commit conține hash-ul arborelui (directorul rădăcină), autorul, data și mesajul. Datele sunt fixate ca hash-urile să fie mereu aceleași.
export GIT_AUTHOR_DATE="2026-10-20T10:00:00+03:00" GIT_COMMITTER_DATE="2026-10-20T10:00:00+03:00"
git init -q -b main catalog
cd catalog
git config user.name "Ana Popescu" && git config user.email "ana@exemplu.ro"
echo "Ana: 10" > note.txt
git add . && git commit -q -m "Nota Anei"
git cat-file -t HEAD
git cat-file -p HEAD
Rezultat
commit
tree bd0df69066325d5f2730a472981277f81498b1d0
author Ana Popescu <ana@exemplu.ro> 1792479600 +0300
committer Ana Popescu <ana@exemplu.ro> 1792479600 +0300
Nota Anei
Exemplul 2: Arborele unui commit și conținutul unui fișier
HEAD^{tree} este directorul rădăcină, iar HEAD:note.txt este fișierul așa cum a fost salvat în ultimul commit.
git init -q -b main catalog
cd catalog
git config user.name "Ana Popescu" && git config user.email "ana@exemplu.ro"
echo "Ana: 10" > note.txt
git add . && git commit -q -m "Nota Anei"
echo "Ana: 4" > note.txt
git cat-file -p 'HEAD^{tree}'
echo "--- in commit:"
git cat-file -p HEAD:note.txt
git cat-file -s HEAD:note.txt
Rezultat
100644 blob e3f01584ddb63532962f11e1f992753c33335d5c note.txt
--- in commit:
Ana: 10
8
Greșeli frecvente
- Așteptarea să vezi modificările nesalvate:
git cat-filecitește doar obiecte deja scrise în baza de date (commit-uri sau fișiere adăugate cugit add), nu fișierele de pe disc. - Uitarea ghilimelelor în jurul expresiilor cu acolade, ca
'HEAD^{tree}': unele shell-uri (de exemplu zsh) interpretează acoladele și caracterul^.
Comenzi înrudite
git show: Afișează informații detaliate și diferențele de cod (diff) ale unui commit, etichetă sau fișier istoric.git rev-parse: Transformă nume de ramuri, etichete sau expresii (HEAD~2, main^) în hash-uri și răspunde la întrebări despre depozit în scripturi.git ls-files: Listează fișierele din index (urmărite de Git), dar și fișierele modificate, neurmărite sau ignorate.