Pregunta

Tengo mi repo @ github. Hice un trabajo en casa y lo empujó a github. Se trataba de algo de borrado de archivos y directorios. Ahora estoy en mi caja de trabajo, que tenía una copia del código antes de eliminar los archivos y directorios.

I emitió el siguiente:

git remote update
git checkout HEAD
git pull origin HEAD

Se elimina todos los archivos que debe tener, pero no los directorios de los archivos estaban en.

Dos preguntas:

  1. ¿Por qué no eliminar los directorios?
  2. ¿Hay un comando git puedo emitir en el estado actual de eliminarlos?
¿Fue útil?

Solución

Git no hace un seguimiento directorios, por lo que no eliminará los que se convierten en vacío como resultado de una fusión u otro cambio. Sin embargo, se puede utilizar para eliminar los directorios git clean -fd sin seguimiento (los medios bandera -fd f orce eliminación de archivos sin seguimiento y d irectories).

Otros consejos

Como parte de la mayoría de las operaciones que alteran el árbol de trabajo (tirar, fusionar, pago y envío, etc.) Git se eliminarán todos los directorios que se hacen vacío por esa operación (es decir git removido el último archivo).

git no eliminará todos los directorios que no son completamente vacío, por lo que si has ocultado o ignorado archivos a continuación, sólo porque git elimina el último rastreados archivo de ese directorio no significa necesariamente que Git será capaz de eliminar ese directorio. Git no tiene en cuenta que se trata de una condición de error por lo que no se quejan de ello.

Git no hace un seguimiento directorios, archivos (con su camino). Git crea todos los directorios para esos caminos si no existen todavía (fresco!), Sin embargo, tiene no eliminarlos si todos los archivos contenidos en un camino se mueven o eliminan (no fría ☹. .. pero hay razones).

Solución (una vez que se han retirado rápido / avanzados / fusionada):

git stash --include-untracked
git clean -fd
git stash pop

Si no stash antes clean, perderá todos sus archivos sin seguimiento (irreversible).

Nota: puesto que este limpia todos los ficheros ignorados demasiado, puede que tenga que ejecutar algunos de sus guiones de construcción de nuevo para volver a crear metadatos del proyecto (por ejemplo: ./gradlew eclipse). Esto también elimina los directorios que están vacíos y que nunca fueron parte de rutas de los archivos Git.

Git no hace un seguimiento directorios actualmente (ver git wiki ), < strike>, es decir, que no puede agregar directorios vacíos, ni se gIT eliminar directorios que terminan vacío (EDIT:.! Gracias, Manni, yo estaba equivocado no se puede Añadir directorios vacíos, pero Git eliminar directorios que se convierten en vacío porque su contenido rastreado se ha eliminado. )

En cuanto a la orden de eliminar los directorios vacíos:. Eso depende de su sistema operativo

Para Linux se puede utilizar, por ejemplo.,

find -depth -type d -empty -exec rmdir {} \;

Sin embargo, esto eliminará todos los directorios vacíos!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top