git rev-parse to scyzoryk Gita do tłumaczenia tego, co ludzkie, na to, co Git rozumie. Bierze referencję (gałąź, tag, HEAD, skrót HEAD~3) i zwraca pełny identyfikator commita (40-znakowy SHA-1) albo informacje o samym repozytorium: gdzie jest jego korzeń, gdzie siedzi katalog .git, czy w ogóle stoisz w drzewie roboczym. Sam nic nie zmienia ani nie commituje, dlatego jest ulubieńcem skryptów i hooków, które potrzebują pewnej, jednoznacznej odpowiedzi zamiast zgadywania.
Składnia i najważniejsze opcje
Podstawowa forma to git rev-parse [opcje] . Najczęściej używasz jednej z poniższych flag:
--abbrev-ref— zwraca krótką, czytelną nazwę zamiast pełnego SHA, np. dlaHEADwypluje nazwę bieżącej gałęzi.--short[=N]— skraca hash do najkrótszej jednoznacznej postaci (domyślnie ok. 7 znaków, opcjonalnie podajesz długość).--verify— sprawdza, że podano dokładnie jedną referencję, którą da się rozwinąć do prawdziwego obiektu; jeśli nie, kończy się błędem zamiast cichą bzdurą.--show-toplevel— wypisuje absolutną ścieżkę do korzenia repozytorium, nawet gdy stoisz w podkatalogu.--git-dir— pokazuje ścieżkę do katalogu.gitbieżącego repo.--is-inside-work-tree— zwracatruelubfalsew zależności od tego, czy jesteś w drzewie roboczym.--quiet— wycisza komunikaty, przydatne ze--verifyw warunkach skryptu.
Przykłady użycia
git rev-parse HEAD— wypisuje pełny SHA-1 commita, na którym aktualnie siedzisz.git rev-parse --abbrev-ref HEAD— zwraca nazwę bieżącej gałęzi, klasyk do promptów w shellu i do CI.git rev-parse --short HEAD— krótki hash do logów czy numeru buildu, np.a1b2c3d.git rev-parse --show-toplevel— daje ścieżkę do korzenia repo, idealne docd "$(git rev-parse --show-toplevel)".git rev-parse --verify origin/main— potwierdza, że gałąź zdalna istnieje i rozwija ją do SHA, zanim coś na niej odpalisz.
Częste błędy i pułapki
Najczęstsza wpadka to traktowanie git rev-parse HEAD jako uniwersalnego sprawdzacza. W świeżym repo bez żadnego commita HEAD jeszcze na nic nie wskazuje, więc dostaniesz błąd, nie pusty wynik. Po drugie: w skryptach zawsze dodawaj --verify --quiet, bo gołe git rev-parse jakas-fraza potrafi zwrócić argument bez zmian (i kod wyjścia 0), gdy nie rozpozna go jako referencji, co cicho psuje logikę. Pamiętaj też o kolejności: --abbrev-ref musi stać przed referencją, nie po. Mylenie --show-toplevel (korzeń drzewa roboczego) z --git-dir (katalog .git) też zbiera żniwo, szczególnie przy submodułach i worktree, gdzie te ścieżki się rozjeżdżają. Zachowanie flag jest identyczne na Linuksie, macOS i Windows, więc tu różnic między systemami się nie spodziewaj.
Powiązane komendy: git symbolic-ref, git show-ref, git describe, git branch oraz git log.