Git: eliminó algunos archivos localmente, ¿cómo los obtengo de un repositorio remoto?

109

He eliminado algunos archivos de mi PC, ¿cómo los vuelvo a descargar?

Pull dice: "Ya actualizado".

Dick Colt
fuente
1
No tienes que "descargarlos de nuevo", porque todo el historial del repositorio existe localmente cuando usas Git.
cdhowie
¿Sabes cómo conseguirlos de local?
Charlie Parker

Respuestas:

162

Dado que git es un VCS distribuido, su repositorio local contiene toda la información. No es necesario realizar ninguna descarga; solo necesita extraer el contenido que desea del repositorio a su alcance.

Si no ha cometido la eliminación, simplemente consulte los archivos de su confirmación actual:

git checkout HEAD <path>

Si ha cometido la eliminación, debe verificar los archivos de una confirmación que los tenga. Presumiblemente sería el compromiso anterior:

git checkout HEAD^ <path>

pero si se ha nconfirmado hace, use HEAD~no simplemente inicie gitk, busque el SHA1 de la confirmación adecuada y péguelo.

Cascabel
fuente
2
solo como un comentario lateral, esto también funciona para un directorio completo, no es especial ni específico para un solo archivo (funcionó cuando lo probé al menos). Thnx por cierto.
Charlie Parker
5
Nota: <path>es obligatorio, incluso si solo tiene un .punto para el directorio actual. Pero la "rama" ( HEADen el ejemplo anterior) es opcional. Al igual que con tantos comandos de Git, ni la salida ni la ayuda son útiles.
MarkHu
39

git checkout filename

git reset --hard podría hacer el truco también

Šimon Tóth
fuente
9
advirtiendo que al usar el git reset --hardmétodo, ya que revertirá todo el árbol a la ubicación en la que colocas HEAD / HEAD ^ / HEAD ~ n y lo hará sin prejuicios y potencialmente perderá muchas confirmaciones ...
g19fanatic
git checkout filename fue la respuesta para mí :)
Ruub
git checkout filename crea solo un archivo vacío
mrek
colocado en la carpeta deseada y git checkount .funcionó como un encanto!
hzitoun
21

Si eliminó varios archivos localmente pero no los confirmó, puede forzar el pago

$ git checkout -f HEAD
Amit
fuente
Como vemos en la salida "Ya actualizado", la persona que hace esta pregunta no ha cometido nada últimamente. ¿Debería especificar que git checkout -f HEAD es PELIGROSO? Ya que podría deshacer los cambios locales que no se confirmaron (restaurar archivos anteriores es el resultado positivo, perder los cambios en los archivos editados el negativo).
Lionel Trebuchon
15

Si eliminó varios archivos localmente y no confirmó los cambios, vaya a la ruta de su repositorio local, abra el shell de git y escriba.

$ git checkout HEAD .

Se recuperarán todos los archivos eliminados antes de la última confirmación.

Añadiendo "." recuperará todos los archivos eliminados en el repositorio actual, en sus respectivas rutas.

Para obtener más detalles, consulte la documentación .

rzskhr
fuente
2

Debe verificar una versión anterior antes de eliminar los archivos. Intenta git checkout HEAD^comprobar la última revisión.

meagar
fuente
0

Además, agrego hacer los siguientes pasos para que el repositorio de git esté correctamente vinculado con el IDE:

 $ git reset <commit #>

 $ git checkout <file/path>

¡Espero que esto haya sido útil!

Mona Wade
fuente