2010-01-08 16 views
11

"Cannot rewrite branch(es) with a dirty working directory".error git "No se puede reescribir la rama (s) con un directorio de trabajo sucio"

Soy nuevo en Git - He intentado googlear una respuesta en vano.

¿Qué significa este error? ¿Qué debería/puedo hacer?

+0

es mi primer repositorio git y yo había cometido algo que no pertenece ... tuvo que corregirlo. – jldupont

+0

Estoy teniendo el mismo problema y tengo experiencia con git. Si hago 'git filter-branch --subdirectory-filter somedir-- --all' termino con todo mi repo procesado pero si lo hago' git filter-branch --tree-filter 'rm somefile' - - all' se cierra después de procesar la primera rama con el error mencionado anteriormente. ¿Por qué 'filter-branch' guarda el estado de' --subdirectory-filter' pero se detiene si '--tree-filter' cambia el directorio? –

Respuesta

19

Un directorio de trabajo sucio significa que tiene cambios no confirmados en su bifurcación. Puedes enviarlos o esconderlos. Para guardar sólo tiene que utilizar:

git stash 

y usar esto para traer sus cambios de nuevo

git stash apply 
+0

que ayudó ... ¡gracias! – jldupont

+3

Tenga en cuenta que en realidad podría no tener un directorio de trabajo sucio: hay un error en git anterior a 1.7.7.1, lo que significa que git no actualiza sus índices internos cuando ejecuta 'filter-branch'. Así que intente ejecutar estos dos comandos de todos modos, a menos que alguien sepa de una forma menos hacky de forzar la actualización del índice. (Más discusión sobre esto en [esta pregunta] (http://stackoverflow.com/questions/6463963/git-filter-branch-says-working-tree-is-dirty-when-it-is-not).) –

+2

De un comentario agregado en el enlace de arriba: 'git update-index -q --ignore-submodules --refresh' debe actualizar el índice! –

Cuestiones relacionadas