2012-06-25 33 views
11

Estoy en una transición de SVN a GIT y recibí una pregunta para la que no puedo encontrar una respuesta. Describiré el escenario habitual cuando trabajo con algunos proyectos de código abierto a través de SVN.Restaurar archivo eliminado del repositorio

  1. Hace una obtención
  2. inicio de jugar un poco con los archivos, hacer cambios, para probar cómo funciona el proyecto.
  3. después de p.2 algunos archivos están muy modificados y no tengo ninguna posibilidad de volver al estado original.
  4. Elimino los archivos modificados del disco "rm filename.cpp", ejecuto el comando "svn update" y listo, todos los archivos originales están de vuelta.

Todo esto funciona bien con GIT también, excepto la p.4. Intento hacer "git pull", dice que el proyecto está actualizado y que no recibo los archivos originales aunque falten en la carpeta local.

¿Cuál es el comando correcto para p.4 cuando se trabaja con git. Thx

+1

posible duplicado de [¿Cómo restaurar los archivos a estados anteriores en git?] (http://stackoverflow.com/questions/35284/how-do-i-restore-files-to-previous-states-in-git) –

Respuesta

10

Trate de comprobación la rama actual (o HEAD):

git checkout HEAD 

O si desea revertir todo al último estado comprometida (advertencia: esto borrará permanentemente todos los cambios uncommited !), también se puede restablecer el hardware:

git reset --hard 
+0

Ninguno de estos está funcionando.Borro algunos archivos, después de que compruebo, dice que algunos archivos tienen bandera D, no ocurre nada más. Si lo reinicio, dice que hay una solicitud de aprobación que no necesito y de nuevo no sucede nada más. Si hago pull, dice que los archivos están actualizados, pero los archivos eliminados siguen desaparecidos. – Eugen

+0

Lo siento, parece que el restablecimiento --hard está funcionando correctamente. Thx – Eugen

10

la forma más sencilla se indica en la salida del git status:

git checkout -- file 

donde el archivo puede ser el nombre de un archivo eliminado. Esto recuperará el archivo eliminado sin afectar a otros archivos.

+0

bien, pero ¿qué hacer si hay 10 archivos que quiero restaurar y no recuerdo sus nombres? – Eugen

+0

'git status' le dirá los nombres de todos los archivos modificados/eliminados – madth3

+1

Además, si ha eliminado una carpeta digamos/src/test, y supongamos que tiene muchos archivos debajo de ella, incluso entonces puede restaurarlos simplemente ejecutando la siguiente comando: git checkout - src/test – user204069

0

Git es terrible en este caso, y he estado luchando con ello tanto que es increíble. Esta es la manera de hacerlo:

  1. Clonar el repositorio remoto a un lugar en su disco duro local diferente de donde tienes tu repositorio local existente
  2. Copiar los archivos borrados/directorios desde el repositorio recién clonado a el repositorio local existente
  3. confirmar los cambios a tu repositorio local existente, si es necesario pulsar también al repositorio remoto
  4. Eliminar el repositorio local que se acaba clonado

Por qué Shoul D Sea este momento complicado y consumir para obtener una sencilla tarea tan hecho me escapa ...

0

Esto es lo que haría:

git reset HEAD <file-path> git checkout -- <file-path>

Cuestiones relacionadas