Jestem w trakcie git bisect
sesji.
Jakie jest polecenie, aby dowiedzieć się, które zatwierdzenie (skrót SHA1) jest aktualnie włączone? git status
nie zapewnia tego.
Edycja: Myślę, że dzwonienie git log
i oglądanie pierwszego wpisu działa?
Masz co najmniej 5 różnych sposobów, aby zobaczyć zatwierdzenie, które aktualnie pobrałeś do kopii roboczej podczas git bisect
sesji ( 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 show
z -s
opcją pomijania wyjścia poprawki:
$ git show --oneline -s
a9874fd Merge branch 'epic-feature'
Możesz też po prostu to zrobić, git log -1
aby 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 c1abcde
sprawdził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 status
pokaż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 visualize
lub jego wbudowanego aliasu git bisect view
do 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 log -p -S <search>
spełnia swoje zadanie.git status
nie pokazuje identyfikatora zatwierdzenia, chyba że jesteś w stanie odłączonym. w przeciwnym razie mówi „Na gałęzi, cokolwiek ”.git show
działa jednakMożesz po prostu:
Aby wyjaśnić nieco dalej:
git rev-parse
jest podstawowym poleceniem gita do interpretowania dowolnego z egzotycznych sposobów, w jakie można określić nazwę zatwierdzenia, iHEAD
jest odniesieniem do twojego aktualnego zatwierdzenia lub gałęzi. (Wgit bisect
sesji wskazuje bezpośrednio na zatwierdzenie („odłączony HEAD”), a nie gałąź).Alternatywnie (i łatwiejsze do zapamiętania) byłoby po prostu:
... który domyślnie pokazuje zatwierdzenie, na które
HEAD
wskazuje. Aby uzyskać bardziej zwięzłą wersję, możesz:źródło
git rev-parse HEAD
nie wymaga przetwarzania w porównaniu ze wszystkimi alternatywami śmieci.Aktualizacja:
Alternatywnie (jeśli masz tagi):
(Dobre do nazwania wersji, niezbyt dobre do przekazywania z powrotem do git).
Lub (jak zasugerował Mark, podając tutaj kompletność):
źródło
Jeśli chcesz wyodrębnić tylko prostą informację, możesz to uzyskać za
git show
pomocą--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ć:Jeśli chcesz zapisać to w zmiennej środowiskowej w bash (jest to prawdopodobne, że ludzie chcą to zrobić), możesz użyć
$()
składni :Pełna lista tego, co możesz zrobić, znajduje się w
git 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}źródło
show
nie ma nic dla gałęzi .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.źródło