Para completar su propia respuesta, la sintaxis es
git show object
git show $REV:$FILE
git show somebranch:from/the/root/myfile.txt
git show HEAD^^^:test/test.py
El comando toma el estilo habitual de revisión, lo que significa que puede usar cualquiera de los siguientes:
- nombre de la sucursal (como se sugirió por la ceniza )
HEAD
+ x número de ^
caracteres
- El hash SHA1 de una revisión dada
- Los primeros pocos (quizás 5) caracteres de un hash SHA1 determinado
Consejo Es importante recordar que cuando use " git show
", siempre especifique una ruta desde la raíz del repositorio , no su posición actual en el directorio.
(Aunque Mike Morearty menciona que, al menos con git 1.7.5.4, puede especificar una ruta relativa colocando " ./
" al comienzo de la ruta, por ejemplo:
git show HEAD^^:./test.py
)
Con Git 2.23+ (agosto de 2019), también puede usar el git restore
que reemplaza el git checkout
comando confuso
git restore -s <SHA1> -- afile
git restore -s somebranch -- afile
Eso restauraría en el árbol de trabajo solo el archivo como presente en el "origen" ( -s
) confirma SHA1 o rama somebranch
.
Para restaurar también el índice:
git restore -s <SHA1> -SW -- afile
( -SW
: abreviatura de --staged --worktree
)
Antes de git1.5.x, eso se hizo con algunas tuberías:
git ls-tree <rev>
muestra una lista de uno o más objetos 'blob' dentro de una confirmación
git cat-file blob <file-SHA1>
cat un archivo como se ha confirmado dentro de una revisión específica (similar a svn cat). use git ls-tree para recuperar el valor de un archivo dado-sha1
git cat-file -p $(git-ls-tree $REV $file | cut -d " " -f 3 | cut -f 1)::
git-ls-tree enumera el ID de objeto para $ file en la revisión $ REV, esto se corta de la salida y se usa como argumento para git-cat-file, que realmente debería llamarse git-cat-object, y simplemente vuelca ese objeto a stdout.
Nota: desde Git 2.11 (Q4 2016), ¡puede aplicar un filtro de contenido a la git cat-file
salida!
Ver commit 3214594 , commit 7bcf341 (09 de septiembre de 2016), commit 7bcf341 (09 de septiembre de 2016) y commit b9e62f6 , commit 16dcc29 (24 de agosto de 2016) por Johannes Schindelin ( dscho
) .
(Fusionada por Junio C Hamano - gitster
- en commit 7889ed2 , 21 sep 2016)
cat-file
: apoyo --textconv
/ --filters
en modo por lotes
Aunque " git hash-objects
", que es una herramienta para tomar un flujo de datos en el sistema de archivos y ponerlo en el almacén de objetos de Git, permitió realizar las conversiones de "fuera del mundo a Git" (por ejemplo, conversiones de fin de línea y aplicación del filtro limpio), y tenía la característica activada por defecto desde los primeros días, su operación inversa " git cat-file
", que toma un objeto del almacén de objetos Git y lo externaliza para el consumo del mundo exterior, carecía de un mecanismo equivalente para ejecutar el "Git-to-outside-world"
git config diff.txt.textconv "tr A-Za-z N-ZA-Mn-za-m <"
git cat-file --textconv --batch
Nota: " git cat-file --textconv
" comenzó a segfaularse recientemente (2017), que se ha corregido en Git 2.15 (Q4 2017)
Ver commit cc0ea7c (21 de septiembre de 2017) por Jeff King ( peff
) .
(Fusionada por Junio C Hamano - gitster
- en commit bfbc2fc , 28 sep 2017)
Tenga en cuenta que para anular / reemplazar un archivo con un contenido anterior, ya no debe usar el comando confusogit checkout
, pero git restore
(Git 2.23+, agosto de 2019)
git restore -s <SHA1> -- afile
Eso restauraría en el árbol de trabajo solo el archivo como presente en el "origen" ( -s
) confirma SHA1.
Para restaurar también el índice:
git restore -s <SHA1> -SW -- afile
( -SW
: abreviatura de --staged --worktree
)
git show
(sin ayuda) usa una sintaxis diferente con dos puntos.git show 2c7cf:my_file.txt