2009-03-11 12 views
8

Duplicar posibles:
Restore a deleted file in a Git repoNo se puede recuperar un archivo en Git

Tengo dos sucursales en mi Git, principal y newFeature. En la rama newFeature, eliminé el archivoA físicamente por primera vez en el terminal y luego en Git por

git rm fileA 

Posteriormente, corro

git add . 
git commit 

En este momento, necesito el archivoA nuevo. Tuve la idea de que puedo recuperarlo, simplemente cambiando a la rama master. Estaba aparentemente equivocado, ya que no puedo encontrar el archivo A.

¿Cómo puedo recuperar el archivo A con Git?

Respuesta

11

En primer lugar, debe encontrar dónde tiene la última versión de fileA. Puede usar "git log -p" o "git whatchanged" para verificar cuándo fue borrado, o puede usar "git ls-files < revisión > - fileA" para verificar si el archivo está presente en la confirmación dada, donde '< revisión >' puede ser maestro o newFeature^ (newFeature^ significa matriz de newFeature).

Luego hay que comprobar que funciona, ya sea usando

$ git checkout <revision> -- fileA 

o redirigir "git show" de salida

$ git show <revision>:fileA > fileA 

No se olvide de añadir el archivo a Git (si es necesario)!

1
@titan:~$ cd /tmp/ 
@titan:/tmp$ mkdir x 
@titan:/tmp$ git init 
Initialized empty Git repository in /tmp/.git/ 
@titan:/tmp$ echo a > a 
@titan:/tmp$ git add a 
@titan:/tmp$ git ci -m a 
Created initial commit c835beb: a 
1 files changed, 1 insertions(+), 0 deletions(-) 
create mode 100644 a 
@titan:/tmp$ git rm a 
rm 'a' 
@titan:/tmp$ git ci -m b 
Created commit de97fae: b 
1 files changed, 0 insertions(+), 1 deletions(-) 
delete mode 100644 a 
@titan:/tmp$ git whatchanged 
commit de97fae7a72375ffa192643836ec8273ff6f762b 
Date: Wed Mar 11 17:35:57 2009 +0100 

    b 

:100644 000000 7898192... 0000000... D a 

commit c835beb7c0401ec27d00621dcdafd366d2cfdcbe 
Date: Wed Mar 11 17:35:51 2009 +0100 

    a 

:000000 100644 0000000... 7898192... A a 
@titan:/tmp$ git show 7898192 
a 
@titan:/tmp$ git show 7898192 > a 
@titan:/tmp$ 
3

crear una etiqueta o una rama en el archivoA comprometerse antes de eliminar archivoA, comprobar que funciona, copie en otro lugar, entonces descargar la rama newFeature nuevo. El resto debería ser bastante simple.

+2

También puede obtener el pago sin crear la sucursal. –

Cuestiones relacionadas