git msysgit git-rebase

Git-¿Cómo arreglar una base de datos interactiva "corrupta"?



msysgit git-rebase (10)

Crea un archivo con este nombre:

touch .git/rebase-merge/head-name

y que usar git rebase

Logré crear un pequeño desorden en mi repositorio git local. Estaba tratando de arreglar un compromiso roto usando las siguientes instrucciones . Antes de ejecutar el "git commit --amend" (y después del git rebase --interactive) decidí que mis cambios eran incorrectos y entonces ejecuté "git reset HEAD --hard". No es una buena idea, te digo.

Ahora la rebase interactiva parece estar "estancada". Git muestra la rama actual como (| REBASE-m). Cada comando (cd .., ls, git rebase ...) dentro de mi repositorio da el siguiente error:

cat: .git / rebase-merge / head-name: no existe ningún archivo o directorio

Así es como se ve git rebase --abort:

$ git rebase --abort cat: c:/_work/project/src/git/.git/rebase-merge/quiet: No such file or directory cat: c:/_work/project/src/git/.git/rebase-merge/head-name: No such file or directory cat: c:/_work/project/src/git/.git/rebase-merge/orig-head: No such file or directory HEAD is now at 4c737fb Revert "Modified file names" rm: cannot remove `c:/_work/project/src/git/.git/rebase-merge/done'': Permission denied rm: cannot remove directory `c:/_work/project/src/git/.git/rebase-merge'': Directory not empty cat: .git/rebase-merge/head-name: No such file or directory

Este es el resultado de git rebase --continuar:

$ git rebase --continue cat: c:/_work/project/src/git/.git/rebase-merge/prev_head: No such file or directory cat: c:/_work/project/src/git/.git/rebase-merge/end: No such file or directory cat: c:/_work/project/src/git/.git/rebase-merge/msgnum: No such file or directory cat: c:/_work/project/src/git/.git/rebase-merge/onto: No such file or directory cat: c:/_work/project/src/git/.git/rebase-merge/quiet: No such file or directory prev_head must be defined cat: .git/rebase-merge/head-name: No such file or directory

¿Algunas ideas? Me gustaría restablecer la situación al estado en que se encontraba antes de comenzar mi bien pensada operación de rebase.

Así es como git log --oneline muestra la situación:

4c737fb Revert "Modified file names" 247ac02 Modified file names 33141e6 Message modifications 10a4a04 Modified db script

Y esto está bien.

Estoy usando msysgit v1.7.0.2.


En Windows, si no desea o no puede reiniciar la máquina, consulte a continuación.

Instalar Process Explorer: https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx

En Process Explorer, busque> File Handle o DLL ...

Escriba el nombre del archivo mencionado en el error (para mi error fue ''git-rebase-todo'' pero en la pregunta anterior, ''hecho'').

Process Explorer resaltará el proceso que mantiene un bloqueo en el archivo (para mí fue ''grep'').

Mata el proceso y podrás abortar la acción git de la manera estándar.


En mi caso, después de probar todas estas opciones y todavía tener problemas, probé sudo git rebase --abort y lo hice todo


En mi caso, fue porque había abierto el registro de SmartGit en el proyecto de Git respectivo y Total Commander en el directorio del proyecto respectivo. Cuando cerré ambos, pude volver a realizar la rebase sin ningún problema.

Cuanto más lo pienso, más sospecho que Total Commander, es decir, que Windows tiene un bloqueo en el directorio abierto, la base de datos de git está intentando algo.

Consejos amigables: cuando intentes arreglar algo, siempre haz un cambio a la vez. ;)


Estoy usando git en eclipse y estaba teniendo el mismo problema.

Eventualmente encontré que la entrada del menú "Rebase ..." se transformó temporalmente en un submenú.

Equipo-> Rebase -> Abortar

Funcionó para mí


Parece que Git intentó eliminar el .git/rebase-merge , pero no pudo eliminarlo por completo. ¿Has intentado copiar esa carpeta? Copie también la carpeta .git/rebase-apply si está presente.


Tenía el mismo problema en Eclipse. No se pudo Rebase => abortar desde Eclipse.

Ejecutando git rebase --abort de Git Bash Worked for me.


Tuve un problema similar debido a un proceso de zombie vim.exe. Matarlo en el Administrador de tareas, seguido de un git rebase --abort arregló.


Una vez que haya completado satisfactoriamente el número X de confirmaciones, el último comando debe ser git rebase --continue . Eso completa el proceso y sale del modo rebase.


Yo tuve el mismo problema. Utilicé Process Explorer como se sugirió en otra publicación (no puedo encontrar esa publicación) y descubrí qué proceso tiene un bloqueo en el archivo y lo elimino. luego ejecuta el --continue o --abort según las necesidades