Estoy en medio de una git bisectsesión.
¿Cuál es el comando para averiguar en qué commit (SHA1 hash) estoy actualmente? git statusno proporciona esto
Editar: supongo que llamar git logy mirar a la primera entrada funciona.
Tiene al menos 5 formas diferentes de ver la confirmación que actualmente ha verificado en su copia de trabajo durante una git bisectsesión ( tenga en cuenta que las opciones 1-4 también funcionarán cuando no esté haciendo una bisección ):
git show.git log -1.git status.git bisect visualize.Explicaré cada opción en detalle a continuación.
Como se explica en esta respuesta a la pregunta general de cómo determinar qué confirmación ha desprotegido actualmente (no solo durante git bisect), puede usar git showla -sopción para suprimir la salida del parche:
$ git show --oneline -s
a9874fd Merge branch 'epic-feature'
También puede simplemente hacer git log -1para averiguar en qué compromiso se encuentra actualmente.
$ git log -1 --oneline
c1abcde Add feature-003
En Git versión 1.8.3+ (¿o era una versión anterior?), Si tiene configurado su indicador Bash para mostrar la rama actual que ha extraído en su copia de trabajo, también le mostrará la confirmación actual que ha verificado fuera durante una sesión bisecta o cuando estás en un estado de "CABEZA separada". En el siguiente ejemplo, actualmente he c1abcdeverificado:
# Prompt during a bisect
user ~ (c1abcde...)|BISECTING $
# Prompt at detached HEAD state
user ~ (c1abcde...) $
También a partir de la versión 1.8.3+ de Git (y posiblemente antes, nuevamente no estoy seguro), la ejecución git statustambién le mostrará qué confirmación ha verificado durante una bisección y cuando está en estado HEAD separado:
$ git status
# HEAD detached at c1abcde <== RIGHT HERE
Finalmente, mientras está haciendo un git bisect, también puede simplemente usar git bisect visualizeo su alias incorporado git bisect viewpara iniciar gitk, de modo que pueda ver gráficamente en qué compromiso está, así como qué compromisos ha marcado como malos y buenos hasta ahora. Estoy bastante seguro de que esto existía mucho antes de la versión 1.8.3, pero no estoy seguro de en qué versión se introdujo:
git bisect visualize
git bisect view # shorter, means same thing

git log -p -S <search>hace el trabajo.git statusno le muestra la identificación de confirmación a menos que esté en estado desconectado. de lo contrario dice "En rama lo que sea ".git showfuncionaSolo puedes hacer:
Para explicar un poco más:
git rev-parsees el comando básico de git para interpretar cualquiera de las formas exóticas en las que puede especificar el nombre de una confirmación yHEADes una referencia a su confirmación o rama actual. (En unagit bisectsesión, apunta directamente a un commit ("HEAD separado") en lugar de una rama).Alternativamente (y más fácil de recordar) sería simplemente hacer:
... que por defecto muestra el commit al que
HEADapunta. Para una versión más concisa, puede hacer:fuente
git rev-parse HEADno requiere procesamiento en comparación con todas las alternativas de basura.Actualizar:
Alternativamente (si tiene etiquetas):
(Bueno para nombrar una versión, no muy bueno para pasar de nuevo a git).
O (como sugirió Mark, enumerando aquí para completar):
fuente
Si desea extraer una simple información, puede usarla
git showcon la--format=<string>opción ... y pedirle que no le proporcione la diferencia--no-patch. Esto significa que puede obtener una salida de estilo printf de lo que desee, que a menudo puede ser un solo campo.Por ejemplo, para obtener solo el hash acortado (
%h), podría decir:Si está buscando guardar eso en una variable de entorno en bash (algo que probablemente la gente quiera hacer) puede usar la
$()sintaxis :La lista
git show --helpcompleta de lo que puede hacer está en . Pero aquí hay una lista abreviada de propiedades que pueden ser útiles:%Hcometer hash%hhash de confirmación abreviado%Thash del árbol%thash abreviado del árbol%Phashes de los padres%phashes primarios abreviados%annombre del autor%aecorreo electrónico del autor%atfecha de autor, marca de tiempo UNIX%aIfecha de autor, estricto formato ISO 8601%cnnombre del confirmador%cecorreo electrónico de confirmación%ctfecha de confirmación, marca de tiempo UNIX%cIfecha de confirmación, estricto formato ISO 8601%stema%flínea de asunto desinfectada, adecuada para un nombre de archivo%gDselector de reflog, por ejemplo, refs / stash @ {1}%gdselector de reflog acortado, por ejemplo, stash @ {1}fuente
showno tiene nada para rama .Use
git show, que también le muestra el mensaje de confirmación, y el valor predeterminado es la confirmación actual cuando no se le dan argumentos.fuente