2010-11-11 8 views
17

Me ha sucedido esto a menudo. Estoy trabajando en una rama principal y necesito probar un complemento, así que creo una nueva rama y la comprobo. Descargo el complemento en el directorio del proyecto y lo pruebo. Luego vuelvo a la rama principal y elimino la rama que había creado.¿Por qué Git no elimina algunos archivos cuando cambio de una rama?

Lo que termina sucediendo es que los archivos del complemento permanecen en el directorio del proyecto. Me pregunto si esto es un comportamiento normal. ¿Qué debo hacer para tener un cambio perfecto entre sucursales?

+0

@ipsum: Answer? –

+3

git no eliminará los archivos sin seguimiento de su copia de trabajo, por lo que a menos que haya agregado los archivos del complemento y haya creado una confirmación en la nueva rama, git no hará nada con los archivos del complemento – knittl

+1

@knittl: * esa * es la respuesta. Bien podría publicarlo. (Junto con una mención de 'git clean', quizás.) – Cascabel

Respuesta

12

git no eliminará los archivos sin seguimiento de su copia de trabajo, por lo que a menos que haya agregado los archivos del complemento y haya creado una confirmación en la nueva rama, git no hará nada con sus archivos de complemento.

si desea eliminar archivos sin seguimiento de su árbol de trabajo, utilice git clean - tenga cuidado, que eliminará cualquier archivo sin seguimiento desde el disco y no hay manera de recuperarse de que (sin necesidad de utilizar software de recuperar)

+0

El peligro potencial de 'git clean', por supuesto, es por qué no hará nada a menos que le pase la opción' -f'. (Posiblemente útil para este caso, puede usarlo en rutas específicas). – Cascabel

+0

por qué "git no eliminará los archivos sin seguimiento de su copia de trabajo"? ¿Mi próximo 'git add' agregará esos archivos sin seguimiento de diferentes ramas? – joetsuihk

+0

@joetsuihk: los archivos no rastreados en el directorio de trabajo no pertenecen a ninguna rama, pertenecen al directorio de trabajo. si 'git add' no ha sido rastreado, se incluirán en el siguiente commit – knittl

0

checkout -f intento

ver git checkout --help:

Proceder incluso si el índice o el árbol de trabajo difiere de HEAD. Esto se usa para descartar cambios locales.

+2

No creo que esto sea lo que está experimentando el OP. El proceso de pago continúa, pero deja algunos archivos allí. – Cascabel

+0

Estoy de acuerdo con Jefromi –

0

Si es de alternar entre las ramas donde las estructuras de directorios son diferentes, y usted encontrará que hay algunos artefactos sobrantes, puede que tenga que ejecutar:

git clean -df 

Esto va a "eliminar" "fuerza". Perderá TODOS los archivos sin seguir, creo que esto podría estar a un paso de:

git reset --hard 
Cuestiones relacionadas