2011-07-08 10 views
115

Tengo un compromiso antiguo que hice hace unas semanas. Quiero restaurar solo un solo archivo de esa confirmación. ¿Qué debo hacer?Restaurar archivo de la confirmación anterior en git

+1

¿Posible duplicado de [Restablecer o revertir un archivo específico a una revisión específica usando Git?] (Http://stackoverflow.com/questions/215718/reset-or-revert-a-specific-file-to- a-specific-revision-using-git) –

Respuesta

142
git checkout '[email protected]{7 days ago}' -- path/to/file.txt 

Esto no alterará CABEZA, se acaba de sobrescribir el archivo local path/to/file.txt

Ver man git-rev-parse para posibles especificaciones de revisión allí (por supuesto un hash sencilla (como dd9bacb) va a hacer muy bien)

No olvides confirmar el cambio (después de una revisión ...)

+8

Guau, @heneryville y sehe, en realidad pensé que "hace 7 días" era meta porque se daría cuenta de lo que cometer. ty! – AnneTheAgile

+3

Parte 2 Al desear elegir una confirmación concreta, el formato anterior no funciona. En su lugar use lo que Urs mostró a continuación, git checkout commitShaNumber - ruta/a/archivo.txt por http://stackoverflow.com/questions/215718/how-do-i-reset-revert-a-specific-file -to-a-specific-revision-using-git – AnneTheAgile

+1

@AnneTheAgile, de hecho, esa sigue siendo exactamente la misma sintaxis, simplemente dio un ejemplo "complejo" de ['revision-specification'] (http: // www. kernel.org/pub/software/scm/git/docs/git-rev-parse.html), ya que es lo que hizo la OP :) – sehe

56
  1. Revisa el archivo de tu antigua confirmación a través de git checkout [Revision_Key] -- path/to/file.
  2. Agregar, confirmar, presionar según corresponda.
+3

'git checkout' puede manejar archivos individuales (véase la respuesta por sehe), no hay necesidad de copiar y pegar. – Koraktor

+0

¿Las claves de revisión son siempre SHA1 para la confirmación? – IslandCow

+1

Lo son, pero generalmente los primeros 6 a 8 caracteres de SHA1 son suficientes para identificar la revisión. –

Cuestiones relacionadas