Estoy en medio de una git bisect
sesión.
¿Cuál es el comando para averiguar en qué commit (SHA1 hash) estoy actualmente? git status
no proporciona esto
Editar: supongo que llamar git log
y 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 bisect
sesió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 show
la -s
opción para suprimir la salida del parche:
$ git show --oneline -s
a9874fd Merge branch 'epic-feature'
También puede simplemente hacer git log -1
para 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 c1abcde
verificado:
# 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 status
tambié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 visualize
o su alias incorporado git bisect view
para 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 status
no 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 show
funcionaSolo puedes hacer:
Para explicar un poco más:
git rev-parse
es 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 yHEAD
es una referencia a su confirmación o rama actual. (En unagit bisect
sesió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
HEAD
apunta. Para una versión más concisa, puede hacer:fuente
git rev-parse HEAD
no 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 show
con 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 --help
completa de lo que puede hacer está en . Pero aquí hay una lista abreviada de propiedades que pueden ser útiles:%H
cometer hash%h
hash de confirmación abreviado%T
hash del árbol%t
hash abreviado del árbol%P
hashes de los padres%p
hashes primarios abreviados%an
nombre del autor%ae
correo electrónico del autor%at
fecha de autor, marca de tiempo UNIX%aI
fecha de autor, estricto formato ISO 8601%cn
nombre del confirmador%ce
correo electrónico de confirmación%ct
fecha de confirmación, marca de tiempo UNIX%cI
fecha de confirmación, estricto formato ISO 8601%s
tema%f
línea de asunto desinfectada, adecuada para un nombre de archivo%gD
selector de reflog, por ejemplo, refs / stash @ {1}%gd
selector de reflog acortado, por ejemplo, stash @ {1}fuente
show
no 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