Sprawdź, które zatwierdzenie jest aktualnie wyewidencjonowane w Git

157

Jestem w trakcie git bisectsesji.

Jakie jest polecenie, aby dowiedzieć się, które zatwierdzenie (skrót SHA1) jest aktualnie włączone? git statusnie zapewnia tego.

Edycja: Myślę, że dzwonienie git logi oglądanie pierwszego wpisu działa?

Steven Lu
źródło

Odpowiedzi:

173

Masz co najmniej 5 różnych sposobów, aby zobaczyć zatwierdzenie, które aktualnie pobrałeś do kopii roboczej podczas git bisectsesji ( zwróć uwagę, że opcje 1-4 będą działać również, gdy nie wykonujesz połowy ):

  1. git show.
  2. git log -1.
  3. Bash zachęta.
  4. git status.
  5. git bisect visualize.

Poniżej szczegółowo wyjaśnię każdą opcję.

Opcja 1: git show

Jak wyjaśniono w tej odpowiedzi na ogólne pytanie, w jaki sposób określić, które zatwierdzenie zostało aktualnie wyewidencjonowane (nie tylko w trakcie git bisect), możesz użyć git showz -sopcją pomijania wyjścia poprawki:

$ git show --oneline -s
a9874fd Merge branch 'epic-feature'

Opcja 2: git log -1

Możesz też po prostu to zrobić, git log -1aby dowiedzieć się, na którym commicie aktualnie się znajdujesz.

$ git log -1 --oneline
c1abcde Add feature-003

Opcja 3: monit Bash

W wersji Git 1.8.3+ (czy była to wcześniejsza wersja?), Jeśli masz skonfigurowany znak zachęty Bash do wyświetlania bieżącej gałęzi, którą wyewidencjonowałeś do kopii roboczej, pokaże ci również bieżące zatwierdzenie, które sprawdziłeś podczas sesji połowicznej lub gdy jesteś w stanie „odłączonej głowy”. W poniższym przykładzie c1abcdesprawdziłem obecnie:

# Prompt during a bisect
user ~ (c1abcde...)|BISECTING $

# Prompt at detached HEAD state 
user ~ (c1abcde...) $

Opcja 4: status git

Również od wersji Git 1.8.3+ (i być może wcześniej, znowu nie jestem pewien), uruchomienie git statuspokaże ci również, jaki commit pobrałeś podczas bisekcji i kiedy jesteś w stanie odłączonego HEAD:

$ git status
# HEAD detached at c1abcde <== RIGHT HERE

Opcja 5: wizualizacja git bisect

Wreszcie, gdy robisz a git bisect, możesz po prostu użyć git bisect visualizelub jego wbudowanego aliasu git bisect viewdo uruchomienia gitk, abyś mógł graficznie zobaczyć, na którym zatwierdzeniu jesteś, a także które zmiany oznaczyłeś do tej pory jako złe i dobre. Jestem prawie pewien, że istniało to na długo przed wersją 1.8.3, po prostu nie jestem pewien, w której wersji zostało wprowadzone:

git bisect visualize 
git bisect view # shorter, means same thing

wprowadź opis obrazu tutaj

Społeczność
źródło
Schludny. Kiedy zadałem pytanie, nie korzystałem z Git 1.8 i od tego czasu otrzymałem prawy znak zachęty zsh, który pokazuje skrót zatwierdzenia, myślę, że może nawet pokazać specjalny wskaźnik dotyczący tego, czy przecinam na pół, ale nie mam ' nie robiłem już więcej podziału na pół od czasu, gdy zadałem to pytanie, głównie git log -p -S <search>spełnia swoje zadanie.
Steven Lu
git statusnie pokazuje identyfikatora zatwierdzenia, chyba że jesteś w stanie odłączonym. w przeciwnym razie mówi „Na gałęzi, cokolwiek ”. git showdziała jednak
Kip
87

Możesz po prostu:

git rev-parse HEAD

Aby wyjaśnić nieco dalej: git rev-parsejest podstawowym poleceniem gita do interpretowania dowolnego z egzotycznych sposobów, w jakie można określić nazwę zatwierdzenia, i HEADjest odniesieniem do twojego aktualnego zatwierdzenia lub gałęzi. (W git bisectsesji wskazuje bezpośrednio na zatwierdzenie („odłączony HEAD”), a nie gałąź).

Alternatywnie (i łatwiejsze do zapamiętania) byłoby po prostu:

git show

... który domyślnie pokazuje zatwierdzenie, na które HEADwskazuje. Aby uzyskać bardziej zwięzłą wersję, możesz:

$ git show --oneline -s
c0235b7 Autorotate uploaded images based on EXIF orientation
Mark Longair
źródło
3
Jeśli chcesz po prostu pobrać hash do wykorzystania w innym miejscu, git rev-parse HEADnie wymaga przetwarzania w porównaniu ze wszystkimi alternatywami śmieci.
Nick T
17
$ git rev-parse HEAD
273cf91b4057366a560b9ddcee8fe58d4c21e6cb

Aktualizacja:

Alternatywnie (jeśli masz tagi):

(Dobre do nazwania wersji, niezbyt dobre do przekazywania z powrotem do git).

$ git opisz
v0.1.49-localhost-ag-1-g273cf91

Lub (jak zasugerował Mark, podając tutaj kompletność):

$ git show --oneline -s
c0235b7 Automatycznie obracaj przesłane obrazy na podstawie orientacji EXIF
Alexander Gladysh
źródło
7
Poprosiłeś o SHA1, a nie o coś, co jest łatwe do zapamiętania. ;-)
Alexander Gladysh
Ta wersja jest bardzo przydatna, jeśli chcesz sprawdzić skrypt
Daniele Licitra
12

Jeśli chcesz wyodrębnić tylko prostą informację, możesz to uzyskać za git showpomocą --format=<string>opcji ... i poprosić, aby nie dawał ci różnicy --no-patch. Oznacza to, że możesz uzyskać wynik w stylu printf, cokolwiek chcesz, często może to być pojedyncze pole.

Na przykład, aby uzyskać tylko skrócony hash ( %h), możesz powiedzieć:

$ git show --format="%h" --no-patch
4b703eb

Jeśli chcesz zapisać to w zmiennej środowiskowej w bash (jest to prawdopodobne, że ludzie chcą to zrobić), możesz użyć $()składni :

$ GIT_COMMIT="$(git show --format="%h" --no-patch)"

$ echo $GIT_COMMIT
4b703eb

Pełna lista tego, co możesz zrobić, znajduje się wgit show --help . Ale oto skrócona lista właściwości, które mogą być przydatne:

  • %H zatwierdzić hash
  • %h skrócony skrót zatwierdzenia
  • %T haszysz drzewa
  • %t skrócony skrót drzewa
  • %P skróty nadrzędne
  • %p skrócony skrót nadrzędny
  • %an imię autora
  • %ae e-mail autora
  • %at data autora, sygnatura czasowa UNIX
  • %aI data autora, ścisły format ISO 8601
  • %cn nazwisko autora
  • %ce e-mail osoby zatwierdzającej
  • %ct data nadawcy, sygnatura czasowa UNIX
  • %cI data autora, ścisły format ISO 8601
  • %s Przedmiot
  • %f oczyszczona linia tematu, odpowiednia dla nazwy pliku
  • %gD selektor reflog, np. refs / stash @ {1}
  • %gd skrócony selektor reflogów, np. stash @ {1}
HostileFork mówi, że nie ufaj SE
źródło
Wszystkie te opcje formatowania, ale shownie ma nic dla gałęzi .
bvj
2

Użyj git show, która pokazuje również komunikat o zatwierdzeniu i domyślnie przyjmuje bieżące zatwierdzenie, gdy nie podano żadnych argumentów.

asmeurer
źródło