2011-08-12 16 views
6

Recientemente dividí mi repositorio (que reside en bigproj) usando git filter-branch --subdirectory-filter deep/in/my/project. Luego, moví el directorio .git al deep/in/my/project.Guardar escondite después de git filter-branch --subdirectory-filter

Ahora, escondite se encuentra en un estado extraño, donde el alijo superior es algo así como:

[email protected]{0}: filter-branch: rewrite 

No puedo dejar esto escondite, como me sale este error (después git stash drop):

refs/[email protected]{0}: not a valid stashed state 

Ahora, incluso si sé el refid de stash @ {1}, todavía contiene diffs para los archivos en la jerarquía bigproj. ¿Es posible volver a escribir los datos ocultos, de modo que solo contenga los archivos que pertenecen a la jerarquía deep/in/my/project?

Respuesta

0

Supongo que tiene que hacer el drop y pop antes de mover el directorio .git. Siempre puedes volver a esconderlo después de que te muevas.

+0

No, eso no funciona. Incluso si intento 'git stash drop' antes de mover el directorio' .git', obtengo el mismo error. ¿Qué quieres decir con re-stash? –

+1

Hmm, aparentemente 'stash' no sobrevive al proceso de filtrar por alguna razón. Probablemente tengas que volver a tu estado no filtrado y simplemente confirmar esos cambios, luego, después del filtro, hacer un 'git reset HEAD ~ 1' para que no vuelvan a activarse. –

3

Tuve el mismo problema después de usar git filter-branch. El siguiente comando corta el escondite por completo y, por lo tanto, también elimina las entradas creadas por git filter-branch. ¡Advertencia! que todos los cambios escondidos pueden ser imposibles de recuperar después de llamar a este comando, así que asegúrese de aplicar todos los otros estados escondidos antes de llamar al comando.

git stash clear 
+0

Pero no quiero matar todo el alijo, quiero quedármelo, sin partes que ya no estén en el repositorio. –

Cuestiones relacionadas