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