cached all git git-rm

all - git rm cached gitignore



¿Cómo revertir un "git rm-r"? (11)

Actualizar:

Desde git rm . elimina todos los archivos en este y los directorios secundarios en el proceso de pago y en el índice, debe deshacer cada uno de estos cambios:

git reset HEAD . # This undoes the index changes git checkout . # This checks out files in this and child directories from the HEAD

Esto debería hacer lo que quieras. No afecta a las carpetas principales de su código o índice desprotegido.

Antigua respuesta que no fue:

reset HEAD

hará el truco y no borrará los cambios no confirmados que haya realizado en sus archivos.

después de eso, debe repetir cualquier comando de git add que haya puesto en cola.

Yo accidentalmente dije git rm -r . . ¿Cómo me recupero de esto?

No me he comprometido.

Creo que todos los archivos se marcaron para su eliminación y también se eliminaron físicamente de mi pago local.

EDITAR: Podría (si supiera el comando) volver al último compromiso. Pero sería mucho mejor si pudiera deshacer el git rm -r . . Porque no estoy realmente seguro de lo que hice después de la última confirmación y antes de git rm -r . .


Obtener la lista de confirmación

git log --oneline

Por ejemplo, Stable commit hash: 45ff319c360cd7bd5442c0fbbe14202d20ccdf81

git reset --hard 45ff319c360cd7bd5442c0fbbe14202d20ccdf81 git push -ff origin master


Obtuve algunos archivos y seguí haciendo cambios antes de mi próxima confirmación cuando me di cuenta de que necesitaba recuperar algunos de esos archivos. En lugar de esconder y restablecer, simplemente puede desproteger los archivos individuales que perdió / eliminó si desea:

git checkout HEAD path/to/file path/to/another_file

Esto deja intactos sus otros cambios no comprometidos sin soluciones provisionales.


Para recuperar algunos archivos o carpetas individuales, se puede usar lo siguiente

git reset -- path/to/file git checkout -- path/to/file

Primero se volverán a crear las entradas del índice para la path/to/file y se volverá path/to/file crear el archivo como estaba en la última confirmación, es decir, HEAD .

Sugerencia: uno puede pasar un hash de confirmación a ambos comandos para volver a crear archivos de una confirmación anterior. Ver git reset --help y git checkout --help para más detalles.


Si ha confirmado y presionado los cambios, puede hacer esto para recuperar el archivo.

// Replace 2 with the # of commits back before the file was deleted. git checkout HEAD~2 path/to/file



Tuve exactamente el mismo problema: estaba limpiando mis carpetas, reorganizando y moviendo archivos. Entré: git rm . y pulsa enter; y luego sentí que mis entrañas se aflojaban un poco. Por suerte, no escribí git commit -m "" inmediatamente.

Sin embargo, el siguiente comando

git checkout .

Lo restauré todo, y salvé mi vida.


Tuve una situación idéntica. En mi caso la solución fue:

git checkout -- .


Ya hay algunas respuestas buenas, pero puedo sugerir una sintaxis poco utilizada que no solo funciona bien, sino que es muy explícita en lo que quieres (por lo tanto, no da miedo ni es misteriosa)

git checkout <branch>@{"20 minutes ago"} <filename>


deshacer git rm

git rm file # delete file & update index git checkout HEAD file # restore file & index from HEAD

deshacer git rm -r

git rm -r dir # delete tracked files in dir & update index git checkout HEAD dir # restore file & index from HEAD

deshacer git rm -rf

git rm -r dir # delete tracked files & delete uncommitted changes not possible # `uncommitted changes` can not be restored.

Uncommitted changes not staged changes Uncommitted changes incluyen Uncommitted changes not staged changes , staged changes but not committed .


git reset HEAD

Deberías hacerlo. Si no tiene cambios no comprometidos que le interesan, entonces

git reset --hard HEAD

Debería restablecer por la fuerza todo a su último compromiso. Si tiene cambios no confirmados, pero el primer comando no funciona, guarde los cambios no confirmados con git stash :

git stash git reset --hard HEAD git stash pop