Historial o registro de comandos ejecutados en Git

96

¿Hay alguna manera de que pueda realizar un seguimiento de los comandos que usé en Git en Windows? Quiero ver todos los comandos que he aplicado en mi repositorio.

Quiero poder volver a través del historial de comandos y averiguar el comando que causó el problema si se produjo.

Ver el historial de confirmaciones sería una cosa, pero para mantener un historial de otras acciones, como crear una rama o agregar un control remoto, ¿se realiza un seguimiento de estas?

nilMoBile
fuente
3
Esto es un poco aparte, pero si miras .git/logs, verás el historial de lo que apuntaba cada rama.
Nayuki
1
@Nayuki Dado que pushing no cambia el estado de una sucursal local, reflogaparentemente no almacena pushes, por lo que buscar .git/logs/refs/remotes/*/*es la única forma de ver su pushhistorial.
Kyle Strand

Respuestas:

-8

git mostrará cambios en las confirmaciones que afectan al índice, como git rm. No almacena un registro de todos los comandos de git que ejecuta.

Sin embargo, una gran cantidad de comandos de git afectan el índice de alguna manera, como la creación de una nueva rama. Estos cambios aparecerán en el historial de confirmaciones, que puede ver con git log.

Sin embargo, hay cambios destructivos que git no puede rastrear, como git reset.

Entonces, para responder a su pregunta, git no almacena un historial absoluto de los gitcomandos que ha ejecutado en un repositorio. Sin embargo, a menudo es posible interpolar qué comando ha ejecutado a través del historial de confirmaciones.

Alex
fuente
2
En realidad, como lo menciona correctamente una respuesta a continuación, lo hace. "historial" muestra la lista de comandos ejecutados (desde la instalación).
Umesh .A Bhat
2
El shell almacena el historial, pero git no, ¿verdad?
Alex
3
@UmeshABhat git historysería útil para, por ejemplo, ver qué comandos se han ejecutado en un clon en particular .
Kyle Strand
5
git refloges lo que quieres. Vea la respuesta a continuación.
Chéyo
3
@ cp.engr: El OP solicita el historial de los comandos git, no las confirmaciones de git. Esta respuesta sugiere inferir los comandos de git commits, lo cual es un trabajo muy duro y no siempre es posible. git reflogrealmente muestra los comandos en sí. Además, por cierto, el shell es solo una forma ligeramente más directa de inferir los comandos de git, pero un repositorio de git puede ser tocado por varios shells. Es mejor preguntarle a git qué comandos se usaron.
combinatorist
182

Puedes ver el historial con git-reflog ( ejemplo aquí ):

git reflog
jweyrich
fuente
18
@PauAI aunque git reflog mostraría todas las posiciones que estaba siguiendo su HEAD, en realidad no mostrará todos los comandos de git. Los comandos de Git que no mueven la cabeza (por ejemplo git branch -D my_precious_branch) no aparecerían allí.
Yonatan
@Yonatan, ¿no podrías conseguirlo git reflog --all?
combinatorist
2
@combinatorist trate de añadir un mando a distancia (como la OP dio por ejemplo): git remote add foo bar. no aparecerá en git reflog --all, ya que no modifica el puntero HEAD.
Yonatan
git reflogno me muestra comandos como git statusaso., con o sin --allparámetro.
Lorenz
62

Un registro de sus comandos puede estar disponible en su historial de shell.

history

Si ver la lista de comandos ejecutados volando no es para usted, exporte la lista a un archivo.

history > path/to/file

Puede restringir el volcado exportado para mostrar solo comandos con "git" en ellos mediante la canalización con grep

history | grep "git " > path/to/file

El historial puede contener líneas formateadas como tales

518  git status -s
519  git commit -am "injects sriracha to all toppings, as required"

Usando el número puede volver a ejecutar el comando con un signo de exclamación

$ !518
git status -s
aleatorio
fuente
8

Si está utilizando CentOS u otra versión de Linux, simplemente haga Ctrl+ Ren el indicador y escriba git.

Si sigues presionando Ctrl+, Resto hará una búsqueda inversa en tu historial de comandos que comienzan congit

crmpicco
fuente
7

Escriba historysu terminal. Técnicamente no es git, pero creo que es lo que quieres.

ScottyBlades
fuente
6

Si usa Windows PowerShell, puede escribir "git" y presionar F8. Continúe presionando F8 para recorrer todos sus comandos de git.

O, si usa cygwin, podría hacer lo mismo con ^ R.

mamboking
fuente
En una sesión normal de Windows, puede usar la tecla F7 para obtener una pequeña ventana que le brinda una lista de todos los comandos ingresados ​​en esa sesión
milso
0

Descubrí que en mi versión de git bash "2.24.0.windows.2" en mi carpeta "home" debajo de los usuarios de Windows, habrá un archivo llamado ".bash-history" sin extensión de archivo en esa carpeta. Solo se crea después de salir de bash.

Aquí está mi flujo de trabajo:

  1. antes de salir de bash escriba "history >> history.txt" [ENTRAR]
  2. salir del indicador de bash
  3. mantenga presionada Win + R para abrir el cuadro de comando Ejecutar
  4. entrar shell: perfil
  5. abre "history.txt" para confirmar que mi texto fue agregado
  6. En una nueva línea, presione [F5] para ingresar una marca de tiempo
  7. guardar y cerrar el archivo de texto del historial
  8. Elimina el archivo ".bash-history" para que la próxima sesión cree un nuevo historial

Si realmente quieres puntos, supongo que podrías hacer un archivo por lotes para hacer todo esto, pero esto es lo suficientemente bueno para mí. Espero que ayude a alguien.

usuario65795
fuente