Odpowiedzi:
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 ):
git show.git log -1.git status.git bisect visualize.Poniżej szczegółowo wyjaśnię każdą opcję.
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'
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
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...) $
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
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

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
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
git rev-parse HEADnie wymaga przetwarzania w porównaniu ze wszystkimi alternatywami śmieci.
$ 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
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}shownie ma nic dla gałęzi .
git log -p -S <search>spełnia swoje zadanie.