2009-07-23 9 views
75

¿Cómo puedo consultar una versión particular de un archivo en git?¿Cómo puedo ver una versión particular de un archivo en Git?

He encontrado this mail on the mailing list, que dijo:

$ git checkout HEAD~43 Makefile 
$ git reset Makefile 

Pero no entiendo cómo averiguar 'CABEZA ~ 43', si hago un git log aFile, ¿cómo puedo saber qué 'CABEZA ~ 43 'Debería usar?

¿Y por qué necesito ejecutar git reset para ese archivo? ¿Qué hace?

+0

"git reset " hace exactamente lo mismo que "git checkout ". –

+2

Si su pregunta es sobre la sintaxis de HEAD ~ 43 (documentada en git-rev-parse), pregunte sobre este tema, no sobre uno sin relación que conozca la respuesta. "¿Qué significa HEAD ~ 45 y cómo encontrar una versión particular del archivo? –

+0

según http://www.lt.kernel.org/pub/software/scm/git/docs/v1.6.0.6/git- checkout.html y http://www.lt.kernel.org/pub/software/scm/git/docs/v1.6.0.6/git-reset.html, "git reset " no hace exactamente mismo que "git checkout ": 'git reset ' revierte en el índice de sin tocar en el árbol de trabajo, pero 'git checkout ' actualiza el índice para de y luego actualizar en el trabajo árbol. – yoda

Respuesta

94

¿Sabe a qué compromiso (es decir, la revisión específica) pertenece el archivo? A continuación, hacer:

git checkout <commit> <file> 

El otro comando:

git checkout HEAD~N <file> 

Es para cuando se desea obtener una versión del archivo de una gama de vuelta (que hago para la nostalgia).

+0

Esta debería ser la respuesta aceptada. – TinkerTenorSoftwareGuy

2

HEAD~43 se refiere a la confirmación (versión) del archivo. En lugar de eso, puede usar el hash de confirmación que obtiene al hacer git log en el archivo. Si solo quiere el archivo, no necesita ejecutar git reset en él; eso solo es necesario si desea reenviar el archivo al HEAD actual.

15

HEAD~43 es simplemente treeish, por lo que puede utilizar un hash o una etiqueta. Debe separar treeish del nombre de archivo con --; de lo contrario, se trata como nombre de archivo. Por ejemplo.

git checkout v0.45 -- filename 
git checkout HEAD^ -- filename 
git checkout 16bb1a4eeaa9 -- filename 
Cuestiones relacionadas