2010-03-23 34 views
16

Quiero mostrar el contenido de un archivo dado por una ruta en un estado específico de un git repo. Intenté sin éxito esto:¿Cómo puedo mostrar el contenido de un archivo en un estado específico de un git repo?

git show f825334150cd4bc8f46656b2daa8fa1e92f7796d:Katana/source/Git/GitLocalBranch.h 
fatal: ambiguous argument 
'f825334150cd4bc8f46656b2daa8fa1e92f7796d:Katana/source/Git/GitLocalBranch.h': unknown revision or path not in the working tree. 
Use '--' to separate paths from revisions 

La confirmación en cuestión no modificó el archivo especificado. ¿Cómo puedo mostrar el contenido de un archivo en un estado determinado (especificado por un hash de confirmación) independientemente de la participación del archivo en la confirmación?

Respuesta

4

La sintaxis que se utiliza partidos que se muestra en los ejemplos para la git show página de manual, pero git parece estar dando a entender que se debe especificar la siguiente manera:

# I _don't_ think this is your answer... 
git show f825334150 -- Katana/source/Git/GitLocalBranch.h 

la que he utilizado para la duda y git log está en su página de manual.

Mi instinto, sin embargo, me dice que el uso de una ruta absoluta y no el camino dentro de la parte superior de su árbol de trabajo git. Es necesario asegurarse de que si el directorio está en .gitKatana/source/Git/.git, a continuación, cortar todo antes de la .git, así:

git show f825334150:GitLocalBranch.h 

Si usted está tratando de mostrar una mancha git desde fuera el trabajo de GIT área, debe hacer algo como esto:

GIT_DIR=Katana/source/Git git show f825334150:GitLocalBranch.h 

Esto le indicará a git dónde puede encontrar los datos de su repositorio.

En pocas palabras: compruebe dos veces sus rutas y asegúrese de que estén correctas. Es posible que deba establecer un GIT_DIR si no está ejecutando su comando desde dentro del área de trabajo de Git.

+0

Katana/fuente/Git/GitLocalBranch.h es una ruta relativa desde el directorio de base de git – richcollins

+0

Bueno, eso es cierto, entonces. ¿'F82533' es una confirmación? Puede verificar su tipo ejecutando 'git cat-file -t f82533'. – MikeSep

+1

Acabo de comprobar que 'git show commitHash: path/to/file' funciona bien para mí cuando se hace referencia a un archivo no modificado en la confirmación. – MikeSep

23

Probablemente sea un problema con la especificación de su ruta.

Esto funciona, muestra la versión del Makefile de cometer b1b22df407417...

git show b1b22df407417:Makefile 

o la versión actual en rama principal

git show master:Makefile 

o la versión actual en la rama de laboratorio:

git show exper:Makefile 

O versión anterior en la rama de exper:

git show exper^:Makefile 

Y así sucesivamente

+0

Estoy bastante seguro de que no hay ningún problema con el camino. Creo que el problema es que el archivo no fue modificado por la confirmación. Obtengo el mismo resultado para cualquier archivo que no haya sido modificado por la confirmación. – richcollins

+0

Oh, bien, supuse que seleccionó una versión específica porque sabe que el archivo se modificó. – stefanB

Cuestiones relacionadas