Pregunta ¿Hay un comando rápido de git para ver una versión anterior de un archivo?


¿Hay un comando en git para ver (ya sea volcado a stdout, o en $PAGER o $EDITOR) una versión particular de un archivo en particular?


1191
2017-12-03 19:31


origen


Respuestas:


Puedes usar git show:

$ git show REVISION:path/to/file

Reemplaza REVISION con tu revisión real (podría ser un SHA de confirmación de Git, un nombre de etiqueta, un nombre de rama, un nombre de confirmación relativo o cualquier otra forma de identificar una confirmación en Git)

Por ejemplo, para ver la versión del archivo src/main.c desde hace 4 commits, use:

$ git show HEAD~4:src/main.c

Tenga en cuenta que la ruta es desde la raíz del repositorio a menos que comience con ./ o ../ para indicar una ruta relativa. Para obtener más información, consulte la página de manual de git-show.


1330
2017-12-03 19:46



Hacer esto por fecha se ve así:

git show HEAD@{2013-02-25}:./fileInCurrentDirectory.txt

Tenga en cuenta que HEAD@{2013-02-25} significa "donde HEAD estaba el 2013-02-25" en este repositorio (utilizando el reflog), no "el último compromiso antes del 2013-02-25 en esta rama de la historia".


208
2018-03-07 17:05



Si te gustan las GUI, puedes usar gitk:

  1. Inicie gitk con:

    gitk /path/to/file
    
  2. Elija la revisión en la parte superior de la pantalla, p. por descripción o fecha. Por defecto, la parte inferior de la pantalla muestra la diferencia para esa revisión (correspondiente al botón de opción "parche").

  3. Para ver el archivo de la revisión seleccionada:

    • Haga clic en el botón de radio "árbol". Esto mostrará la raíz del árbol de archivos en esa revisión.
    • Profundiza en tu archivo.

98
2017-12-19 18:21



También puedes especificar un commit hash (a menudo también llamado commit ID) con el git show mando.


En una palabra

git show <commitHash>:/path/to/file


Paso a paso

  1. Mostrar el registro de todos los cambios para un archivo dado con git log /path/to/file
  2. En la lista de cambios que se muestra, muestra el commit hash como commit 06c98... (06c98 ... siendo el hash de confirmación)
  3. Copia el commit hash
  4. Ejecuta el comando git show <commitHash>:/path/to/file utilizando el commit hashdel paso 3 y el path/to/file del paso 1.

Nota: agregando el ./ cuando la especificación de una ruta relativa parece importante, es decir git show b2f8be577166577c59b55e11cfff1404baf63a84:./flight-simulation/src/main/components/nav-horiz.html.


70
2017-11-03 11:21



Además de Jim HunzikerLa respuesta de

puede exportar el archivo de la revisión como,

git show HEAD@{2013-02-25}:./fileInCurrentDirectory.txt > old_fileInCurrentDirectory.txt

Espero que esto ayude :)


29
2018-04-30 05:07



git log -p le mostrará no solo los registros de confirmación sino también la diferencia de cada confirmación (excepto las asignaciones de fusión). Entonces puedes presionar /, ingrese el nombre del archivo y presione enter. prensa n o p para ir a la siguiente / anterior ocurrencia. De esta forma, no solo verá los cambios en el archivo, sino también la información de confirmación.


13
2018-05-06 20:02



Puede usar un script como este para volcar todas las versiones de un archivo en archivos separados:

p.ej.

git_dump_all_versions_of_a_file.sh path/to/somefile.txt

Consigue el guión aquí como respuesta a otra pregunta similar


2
2017-10-30 17:01