Respostas:
Você tem pelo menos 5 maneiras diferentes de visualizar a confirmação que você efetuou no check-out em sua cópia de trabalho durante uma git bisectsessão ( observe que as opções de 1 a 4 também funcionarão quando você não estiver fazendo uma divisão ):
git show.git log -1.git status.git bisect visualize.Vou explicar cada opção em detalhes abaixo.
Conforme explicado nesta resposta à pergunta geral de como determinar qual confirmação você fez check-out atualmente (não apenas durante git bisect), você pode usar git showcom a -sopção para suprimir a saída do patch:
$ git show --oneline -s
a9874fd Merge branch 'epic-feature'
Você também pode simplesmente fazer git log -1para descobrir em qual commit você está atualmente.
$ git log -1 --oneline
c1abcde Add feature-003
No Git versão 1.8.3+ (ou era uma versão anterior?), Se você tiver o prompt do Bash configurado para mostrar a ramificação atual que você efetuou o check-out na sua cópia de trabalho, também mostrará a confirmação atual que você verificou durante uma sessão de corte transversal ou quando você estiver no estado "desanexado da CABEÇA". No exemplo abaixo, atualmente fiz c1abcdecheck-out:
# Prompt during a bisect
user ~ (c1abcde...)|BISECTING $
# Prompt at detached HEAD state
user ~ (c1abcde...) $
Além disso, a partir da versão 1.8.3+ do Git (e possivelmente anterior, novamente, não tenho certeza), a execução git statustambém mostrará o que você fez o check-out durante uma bissecção e quando você está no estado HEAD desanexado:
$ git status
# HEAD detached at c1abcde <== RIGHT HERE
Por fim, enquanto você faz um git bisect, você também pode simplesmente usar git bisect visualizeou seu alias interno git bisect viewpara iniciar gitk, para que você possa visualizar graficamente em qual commit você está, bem como quais commits você marcou como ruim e bom até agora. Tenho certeza de que isso existia bem antes da versão 1.8.3, mas não sei em qual versão ela foi introduzida:
git bisect visualize
git bisect view # shorter, means same thing

git statusnão mostra o ID de confirmação, a menos que você esteja no estado desanexado. caso contrário, ele diz "Em qualquer ramo ". git showfunciona embora
Você pode apenas fazer:
git rev-parse HEAD
Para explicar um pouco mais: git rev-parseé o comando básico do git para interpretar qualquer uma das maneiras exóticas em que você pode especificar o nome de um commit e HEADé uma referência ao seu commit ou branch atual. (Em uma git bisectsessão, ele aponta diretamente para uma confirmação ("HEAD desanexado") em vez de uma ramificação.)
Como alternativa (e mais fácil de lembrar) seria apenas fazer:
git show
... cujo padrão é mostrar o commit que HEADaponta para. Para uma versão mais concisa, você pode fazer:
$ git show --oneline -s
c0235b7 Autorotate uploaded images based on EXIF orientation
git rev-parse HEADnão requer processamento versus todas as alternativas de lixo.
$ git rev-parse HEAD 273cf91b4057366a560b9ddcee8fe58d4c21e6cb
Atualizar:
Como alternativa (se você tiver tags):
(Bom para nomear uma versão, não muito bom para retornar ao git.)
$ git descrevem v0.1.49-localhost-ag-1-g273cf91
Ou (como Mark sugeriu, listando aqui a integridade):
$ git show --oneline -s c0235b7 Autorotate imagens carregadas com base na orientação EXIF
Se você deseja extrair apenas uma informação simples, pode obtê-lo usando git showa --format=<string>opção ... e pedir para não fornecer a diferença --no-patch. Isso significa que você pode obter uma saída no estilo printf do que você quiser, que geralmente pode ser um único campo.
Por exemplo, para obter apenas o hash reduzido ( %h), você pode dizer:
$ git show --format="%h" --no-patch
4b703eb
Se você deseja salvá-lo em uma variável de ambiente no bash (o que provavelmente as pessoas querem fazer), use a $()sintaxe :
$ GIT_COMMIT="$(git show --format="%h" --no-patch)"
$ echo $GIT_COMMIT
4b703eb
A listagit show --help completa do que você pode fazer está em . Mas aqui está uma lista abreviada de propriedades que podem ser úteis:
%H cometer hash%h hash de confirmação abreviado%T hash da árvore%t hash abreviado da árvore%P hashes dos pais%p hashes principais abreviados%an nome do autor%ae email do autor%at data do autor, carimbo de data e hora do UNIX%aI data do autor, formato estrito ISO 8601%cn nome do committer%ce email do autor%ct data de confirmação, carimbo de data e hora do UNIX%cI data do emissor, formato estrito ISO 8601%s sujeito%f assunto higienizado, adequado para um nome de arquivo%gD seletor de reflog, por exemplo, refs / stash @ {1}%gd seletor de reflog reduzido, por exemplo, stash @ {1}shownão tem nada para ramificar .
git log -p -S <search>o trabalho.