git rev-parse în Git

Transformă nume de ramuri, etichete sau expresii (HEAD~2, main^) în hash-uri și răspunde la întrebări despre depozit în scripturi.

Sintaxă comandă
git rev-parse [opțiuni] [<referință>...]

Ce face git rev-parse

git rev-parse este comanda pe care o folosesc scripturile ca să afle informații exacte despre depozit: hash-ul complet al unui commit, numele ramurii curente, directorul rădăcină al proiectului sau dacă directorul curent se află într-un depozit Git.

Primește orice expresie de revizie înțeleasă de Git (HEAD, HEAD~3, main^, v1.2.0, @{u}) și afișează hash-ul corespunzător. Dacă referința nu există, se oprește cu cod de ieșire diferit de zero, lucru util în scripturi.

Opțiuni și argumente

Opțiune / Parametru Descriere
&lt;referință&gt; Afișează hash-ul complet (40 de caractere pentru SHA-1) al commit-ului.
--short[=N] Afișează hash-ul prescurtat (implicit cel puțin 7 caractere).
--abbrev-ref HEAD Afișează numele ramurii curente (sau HEAD dacă ești pe un commit detașat).
--show-toplevel Afișează calea absolută a rădăcinii depozitului.
--is-inside-work-tree Afișează true dacă directorul curent e într-un director de lucru Git.
--git-dir Afișează calea directorului .git.
--verify Verifică faptul că argumentul este exact o referință validă; altfel eroare.

Exemple

Exemplul 1: Ramura curentă și hash-urile ultimelor commit-uri

Datele commit-urilor sunt fixate prin variabile de mediu, așa că hash-urile sunt 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: 9" > note.txt && git add . && git commit -q -m "Note Ana"
echo "Ion: 8" >> note.txt && git commit -q -am "Note Ion"
git rev-parse --abbrev-ref HEAD
git rev-parse --short HEAD
git rev-parse --short HEAD~1

Rezultat

main
6fdf0e8
4cd3d71

Exemplul 2: Verificări într-un script de deploy

Scriptul se asigură că rulează într-un depozit Git și că există eticheta cerută înainte de a continua.

git init -q -b main magazin
cd magazin
git config user.name "Ana Popescu" && git config user.email "ana@exemplu.ro"
touch app.py && git add . && git commit -q -m "v1"
git tag v1.0.0
git rev-parse --is-inside-work-tree
git rev-parse --git-dir
for versiune in v1.0.0 v2.0.0; do
    if git rev-parse --verify -q "$versiune^{commit}" >/dev/null; then
        echo "$versiune exista, pornim deploy-ul"
    else
        echo "$versiune nu exista, oprim"
    fi
done

Rezultat

true
.git
v1.0.0 exista, pornim deploy-ul
v2.0.0 nu exista, oprim

Greșeli frecvente

  • Folosirea git branch | grep '*' în scripturi pentru a afla ramura curentă: ieșirea lui git branch e pentru oameni și se poate schimba. git rev-parse --abbrev-ref HEAD (sau git branch --show-current) este forma stabilă.
  • Uitarea lui --verify când vrei să validezi o referință: fără el, un argument necunoscut poate fi tratat ca nume de fișier, iar mesajul de eroare e mai greu de interpretat.

Comenzi înrudite

  • git log: Afișează istoricul cronologic al commit-urilor, cu autor, dată, hash și mesaj.
  • git branch: Listează, creează, redenumește sau șterge ramuri (branches) de dezvoltare.
  • git cat-file: Afișează tipul, mărimea sau conținutul unui obiect din baza de date Git (commit, tree, blob sau etichetă adnotată).