2012-03-17 20 views
9

Para mis compilaciones de integración continua, quiero asegurarme de que no se hayan depositado archivos perdidos en mi sandbox de git, y ninguno de los archivos ha sido cambiado inadvertidamente.¿Cuál es la forma más eficiente de obtener un arenero limpio de git?

Sé acerca de git reset --hard HEAD, y esto resuelve parte del problema. Pero creo que lo que quiero hacer es eliminar todos los archivos sin seguimiento e ignorados. Podría hacerlo por la fuerza bruta y solo hacer:

rm -rf * 
git checkout -f 

Pero debe haber una forma más eficiente de hacerlo. ¿Algunas ideas?

+2

'git reset HEAD' --hard +' git -f' -d limpia ? – madth3

+0

@ madth3, gracias, creo que de hecho funciona! – mpontillo

Respuesta

12

(ampliado para la posteridad)

Su problema se puede dividir en dos: Volviendo archivos modificados a su estado en la última confirmación y la eliminación de los archivos adicionales que no tienen cabida en el repositorio:

git reset --hard HEAD 

tendrá los archivos de nuevo al estado que tienen en CABEZA, la eliminación de cualquier modificación (incluso si eran escenario para ser comprometido)

git clean -f -d -x 

eliminará cualquier archivo o directorio no rastreado, incluidos los archivos ignorados (Gracias a @Jefromi)

+0

Gracias; Me olvidé del comando 'git clean'. Sabía que estaba recibiendo un deja vu cuando estaba escribiendo esa pregunta. =) – mpontillo

+0

Bueno, he usado el comando 'reset' con más frecuencia, pero buscar' clean' para completar su requerimiento fue fácil. – madth3

+1

También querrás usar '-x' con git-clean; eso lo hace eliminar archivos ignorados también. Esto puede ser significativo, si esos archivos ignorados son productos intermedios de compilación y su proceso de compilación no es perfecto. – Cascabel

-1

¿No hay un clon por separado para la mejor solución de CI?

Sólo traes | clon de su trabajador-repo todos los cambios confirmados antes CI-trabajo (sin ningún tipo de artefactos y los cambios locales)

+0

¿Qué quiere decir? "clon por separado"? Estamos hablando de gigabytes, por lo que no quiero volver a clonar todo el tiempo. – mpontillo

Cuestiones relacionadas