Estou no meio de uma git bisect
sessão.
Qual é o comando para descobrir em qual confirmação (hash SHA1) estou atualmente? git status
não fornece isso.
Edit: Eu acho que ligar git log
e olhar para a primeira entrada funciona?
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 bisect
sessã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 show
com a -s
opçã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 -1
para 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 c1abcde
check-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 status
també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 visualize
ou seu alias interno git bisect view
para 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 log -p -S <search>
o trabalho.git status
não mostra o ID de confirmação, a menos que você esteja no estado desanexado. caso contrário, ele diz "Em qualquer ramo ".git show
funciona emboraVocê pode apenas fazer:
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 eHEAD
é uma referência ao seu commit ou branch atual. (Em umagit bisect
sessã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:
... cujo padrão é mostrar o commit que
HEAD
aponta para. Para uma versão mais concisa, você pode fazer:fonte
git rev-parse HEAD
não requer processamento versus todas as alternativas de lixo.Atualizar:
Como alternativa (se você tiver tags):
(Bom para nomear uma versão, não muito bom para retornar ao git.)
Ou (como Mark sugeriu, listando aqui a integridade):
fonte
Se você deseja extrair apenas uma informação simples, pode obtê-lo usando
git show
a--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:Se você deseja salvá-lo em uma variável de ambiente no bash (o que provavelmente as pessoas querem fazer), use a
$()
sintaxe :A lista
git 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}fonte
show
não tem nada para ramificar .Use
git show
, que também mostra a mensagem de confirmação e o padrão é o commit atual quando não há argumentos.fonte