Si está usando Git desde la línea de comandos, ¿hay alguna manera de eliminar de un solo golpe todos los archivos que se eliminarán en la lista Modificado pero no actualizado? En lugar de hacer elimina manualmente usando comodines.Git - rm equivalente para "agregar."?
Respuesta
Los archivos que se muestran como eliminados en la sección de estado "Modificado pero no actualizado" se eliminan del árbol de trabajo pero no del índice. Poner en escena la supresión en el índice (es decir, eliminar el archivo de índice) que puede hacer:
git diff -z --name-only --diff-filter=D | git update-index --remove -z --stdin
--diff-filter=D
muestra sólo las diferencias en el índice que son archivos borrados, --name-only
sólo imprime su nombre y -z
utiliza NUL a nombres de archivos separados para que no tenga que preocuparse por los nombres de archivos con líneas nuevas incorporadas. update-index
luego elimina los archivos dados del índice.
Si tiene una versión de xargs
que soporta -0
entonces usted podría hacer el un poco más simple:
git diff -z --name-only --diff-filter=D | xargs -0 git rm
Gracias, eso funcionó. – Steve
Bueno, los archivos enumerados en Modificados pero no actualizados ya están en el índice. Puede descartar sus cambios utilizando git checkout .
Para eliminar archivos que son nuevos, pero que no se han agregado al índice, puede usar git clean
.
Pero para eliminar archivos que están modificados y en el índice ... bueno, no hay una solución fácil, probablemente tenga que usar una combinación de git rm
y git ls-files
.
EDIT:
git ls-files -m
debe listar los archivos que está buscando. Combinarlo con git rm
y ya está:
git-ls files -m | xargs git rm // NOT TESTED
EDIT:
probablemente no he entendido bien una parte de su pregunta. Mi solución eliminará todos los archivos enumerados en Modificado pero no actualizado. Si desea eliminar los archivos enumerados como eliminados, debe usar git diff
como muestra Charles Bailey en su respuesta.
Gracias. Entonces, ¿cómo combinarías? git rm
'git ls-files -m' enumera todos los archivos modificados, no solo los eliminados. No creo que quiera eliminar todos los archivos modificados, solo los eliminados del árbol de trabajo. –
@Charles: sí, tienes razón, y así es como entendí la pregunta. Pero probablemente tengas razón y eso no es lo que quiere el OP ... obtuve mi +1 por recogerlo – tanascius
Lo que sigue debe organizar todos los archivos, ya sea eliminado o no, en el índice:
git add -A
Esta es la respuesta rápida que estoy seguro que todos están buscando. –
- 1. RM -rf equivalente para Windows?
- 2. git add/rm (cometer)
- 3. ¿Carpeta Cant RM con GIT rm?
- 4. ¿Cómo agregar y confirmar las eliminaciones realizadas con "rm" en lugar de "git rm"?
- 5. Git: deshacer cambios locales; git add. + git rm?
- 6. ¿Por qué usar 'git rm' para eliminar un archivo en lugar de 'rm'?
- 7. git no puede rm - archivos caché
- 8. git rm -cached file vs git reset file
- 9. git equivalente para hg rollback
- 10. estado de git: ¿qué es UU y por qué debería agregar/rm corregirlo?
- 11. rm-rf rf frente -rm
- 12. Caso de uso práctico de 'git rm' y 'git mv' con git?
- 13. ¿Cómo deshacer git rm -rf dirname sin una primera confirmación?
- 14. es `hg forget` lo mismo que` git rm --cached`?
- 15. ¿Git rm elimina todo el historial de un archivo?
- 16. git rm -r no funciona en un submódulo
- 17. Equivalente a get_or_create para agregar usuarios
- 18. Forma correcta de eliminar archivos no deseados con git filter-branch sin fallo de git rm
- 19. git equivalente a hg mq?
- 20. Git + Rails: ¿Cómo restaurar los archivos eliminados con "git rm -r"?
- 21. Cygwin: diferencia entre el comando '\ rm -fr' y 'rm -fr'?
- 22. hg equivalente a git add -p?
- 23. SVN: ¿equivalente externo en Git?
- 24. equivalente hg de git revert
- 25. Powershell Comando: rm -rf
- 26. "git format-patch" equivalente para un solo archivo?
- 27. Git ¿agregar todos los archivos modificados, eliminados y sin seguimiento?
- 28. ¿Hay un 'git sed' o equivalente?
- 29. Subversion equivalente al comando 'show' de Git?
- 30. Eliminar múltiples objetos con rm()
Tenga en cuenta que 'git commit -a' hará que todos los archivos rastreados que se eliminaron también se eliminen en commit. Solo para tu información. –
'git commit -a' solo agrega archivos, es lo que la mayoría de las personas, incluido yo mismo, hemos estado usando. La respuesta es 'git commit -A'. ¡Organizará los elementos que se agregarán Y los elementos de la etapa para su eliminación al mismo tiempo! Vea la respuesta de Sujoy a continuación. –