2013-04-03 9 views
150

Co robi git rev-parse?Co robi rev-parse git?

Przeczytałem stronę podręcznika, ale podniosłem więcej pytań niż odpowiedzi. Rzeczy takie jak:

Wyłowić i masażu parametry

masaż? Co to znaczy?

używam jako rezolwerem (do SHA1) z specyfikatorami rewizyjnych, jak

git rev-parse HEAD^ 

lub

git rev-parse origin/master 

Czy ten cel komenda jest? Jeśli nie, czy można go użyć, aby to osiągnąć?

+1

miarę widzę w manualu, to głównie wewnętrzne narzędzie do analizowania rewizji/nazwy obiektów dla innych poleceń . To co robisz jest właściwie celem polecenia 'rev-parse'. Możesz go również użyć do znormalizowania wiersza poleceń, aby rzeczywisty program nie musiał rozumieć skomplikowanej składni nazwy obiektu Git (do zmiany lub "masażu" użyłbyś 'git rev-parese', niektóre parametry w wierszu poleceń przed wywołaniem aktualnego programu). –

+0

Zobacz także https://github.com/git/git/commit/b2a2c4d8099c69ec997e51cac489c0947ad17956 – VonC

Odpowiedz

139

git rev-parse jest pomocniczą komendą plumbing używaną głównie do manipulacji.

Jednym z typowych zastosowań git rev-parse jest wydrukowanie skrótów SHA1 z podaniem specyfikatora wersji. Ponadto ma różne opcje formatowania tego wyjścia, takie jak --short do drukowania krótszego unikatowego SHA1.

Są też inne przypadki użycia, jak również (w skryptach i innych narzędzi wbudowanych w górnej części GIT), że mam używane do:

  • --verify celu sprawdzenia, czy określony obiekt jest poprawnym obiektem git.
  • --git-dir do wyświetlania abs/ścieżki względnej katalogu .git.
  • Sprawdzanie, czy jesteś aktualnie w repozytorium przy --is-inside-git-dir lub w obróbce drzewa przy użyciu --is-inside-work-tree
  • Sprawdzanie, czy repo jest nagi użyciu
  • Druk SHA1 skrótów oddziałów (--branches), tagi (--tags) i sędziowie mogą być filtrowane na podstawie pilocie (używając --remote)
  • --parse-opt normalizować argumentów w skrypcie (niby podobny do getopt) i wydrukować ciąg wyjściowy, który może być używany z eval

Massage tylko sugeruje, że możliwe jest przekształcenie informacji z jednego formularza na inny, tj. Polecenie transformacji. Są to kilka przykładów mogę myśleć:

  • oddziału lub nazwę znacznika w SHA1 popełnienia na jego wskazując na to, że może on być przekazany do polecenia hydraulika, który przyjmuje tylko wartości SHA1 do zatwierdzenia.
  • zakres rewizji A..B dla git log lub git diff na ekwiwalent argumentów dla komendy bazowego wodociągowej jako B ^A
44

Wystarczy opracować na etymologii nazwy poleceń rev-parse, Git konsekwentnie używa terminu rev poleceń instalacyjnych jak skrót od "revision" i ogólnie oznacza 40-znakowy skrót SHA1 dla zatwierdzenia. Polecenie rev-list na przykład wypisuje listę 40-znakowych skrótów zatwierdzania dla gałęzi lub cokolwiek innego.

W tym przypadku nazwa może zostać rozszerzona na parse-a-commitish-to-a-full-SHA1-hash. Chociaż polecenie ma kilka pomocniczych funkcji wymienionych w odpowiedzi Tuxdude'a, jego imiennik wydaje się być przypadkiem użycia przekształcenia przyjaznego dla użytkownika odniesienia, takiego jak nazwa oddziału lub skróconego skrótu, do jednoznacznego 40-znakowego skrótu SHA1, który jest najbardziej przydatny w wielu programach/instalacjach hydraulicznych. cele.

wiem, myślałem, że to „reverse-analizowania” coś na dłuższą chwilę, zanim zorientowaliśmy się i miał ten sam problem z płaceniem sens określeń „masowanie” i „manipulacji” :)

Zresztą , Odnajduję tę "od podstaw do rewizji" koncepcję satysfakcjonującego sposobu myślenia o niej i niezawodną koncepcję przypominania tego polecenia, kiedy tego potrzebuję. Często podczas wykonywania skryptów Git, użytkownik przyjmuje przyjazne dla użytkownika odwołanie do zatwierdzenia jako dane wejściowe użytkownika i na ogół chce je rozwiązać do zweryfikowanego i jednoznacznego roboczego odnośnika, zaraz po otrzymaniu go, jak to możliwe. W przeciwnym razie tłumaczenie wejściowe i sprawdzanie poprawności ma tendencję do mnożenia się przez skrypt.

+4

Dzięki za wyjaśnienie, nie rozumiem git-docs jeden bit: http://git-scm.com/docs/git- rev-parsować –

10

git rev-parse działa również na uzyskanie obecną nazwę oddziału pomocą --abbrev-ref flag jak:

git rev-parse --abbrev-ref HEAD