Eu consegui criar uma pequena bagunça no meu repositório git local. Eu estava tentando corrigir um commit quebrado usando as seguintes instruções . Antes de executar o "git commit --amend" (e após o git rebase --interactive), decidi que minhas alterações estavam incorretas e executei o "git reset HEAD --hard". Não é uma boa ideia, eu lhe digo.
Agora, o rebase interativo parece estar "travado". Git mostra o ramo atual como (| REBASE-m). Todo comando (cd .., ls, git rebase ...) dentro do meu repositório gera o seguinte erro:
cat: .git / rebase-merge / head-name: esse arquivo ou diretório não existe
Aqui está como o git rebase --abort se parece:
$ 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
Aqui está o resultado do git rebase --continue:
$ 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
Alguma ideia? Gostaria de redefinir a situação para o estado em que estava antes de iniciar minha bem-pensada operação de rebase.
Aqui está como o git log --oneline mostra a situação:
4c737fb Revert "Modified file names"
247ac02 Modified file names
33141e6 Message modifications
10a4a04 Modified db script
E isso é bom.
Estou usando o msysgit v1.7.0.2.
fonte
git rebase --quit
trabalhou para mimRespostas:
Parece que o Git tentou remover o
.git/rebase-merge
diretório, mas não conseguiu removê-lo completamente. Você já tentou copiar essa pasta? Copie também a.git/rebase-apply
pasta, se houver.fonte
git rebase --abort
(de stackoverflow.com/a/4757777/146044 ) fez trabalho.git rebase --abort
não estava funcionando)git rebase --abort
limpou minhas alterações unstaged ... o erro não desapareceu emboragit rebase --abort
ainda me deu os erros.git rebase --quit
trabalhou para mim.Eu fiquei preso nisso. Criei o arquivo head-name e, em seguida, encontrei outro erro dizendo que não conseguia encontrar o arquivo on, então criei esse arquivo. Em seguida, recebi outro erro dizendo que não era possível ler '.git / rebase-apply / into': esse arquivo ou diretório não existe.
Então , olhei a documentação do git para rebasing e encontrei outro comando:
Isso me colocou de volta na minha ramificação, sem alterações, e eu poderia começar a minha reformulação novamente, como nova.
fonte
git rebase --quit
foi isso!--quit
trabalhou.--abort
não, porque o rebase foi cancelado no meio do caminho$ git rebase --abort
Saída:error: could not read '.git/rebase-apply/head-name': No such file or directory
Finalmente, esta solução corrige meu problema:git rebase --quit
git rebase --quit
absolutamente me salvou. Mesmos sintomas descritos, mas o meu veio depois de tentar fazer umgit pull --rebase
, que por algum motivo falhou. Observe que eu tinha o autostash ativado (versão 2.27.0.windows.1 do git) e o VS2019 estava em execução (apontado para esse repositório) ao mesmo tempo - suspeite que alguma combinação desses tenha estragado tudo.Eu tive um problema semelhante devido a um processo do zombie vim.exe. Matá-lo no Gerenciador de Tarefas, seguido de uma
git rebase --abort
correção.fonte
handle
comando sysinternals e vi que um processo (sh.exe) tinha o arquivo bloqueado. Usandopskill <pid>
fixo para mim.Obrigado @Laura Slocum pela sua resposta
Eu errei as coisas enquanto refazendo e tenho uma CABEÇA desapegada com um
isso me impediu de terminar o rebase.
O HEAD desanexado parece conter precisamente meu estado desejado de rebase correto, então eu corri
e depois disso, verifiquei um novo ramo temporário para vinculá-lo à cabeça desanexada.
Comparando-o com o ramo que eu queria refazer, posso ver que o novo ramo temporário está exatamente no estado que eu queria alcançar. obrigado
fonte
Teve o mesmo problema no Eclipse. Não foi possível rebase => abortar do Eclipse.
Executar o git rebase --abort do Git Bash funcionou para mim.
fonte
No Windows, se você não estiver disposto ou não conseguir reiniciar a máquina, veja abaixo.
Instale o Process Explorer: https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
No Process Explorer, localize> Identificador de arquivo ou DLL ...
Digite o nome do arquivo mencionado no erro (para o meu erro foi 'git-rebase-todo', mas na pergunta acima, 'pronto').
O Process Explorer destacará o processo mantendo um bloqueio no arquivo (para mim era 'grep').
Finalize o processo e você poderá abortar a ação git da maneira padrão.
fonte
Crie um arquivo com este nome:
e que usar
git rebase
fonte
No meu caso, eighter
git rebase --abort
egit rebase --continue
estava jogando:Eu consegui corrigir esse problema removendo manualmente o
.git\rebase-apply
diretório :.fonte
Estou usando
git version 2.19.2.windows.1
.a única coisa que funcionou para mim foi remover o
.git/rebase-apply/
diretório e executar umgit reset --hard
.fonte
No meu caso, foi porque eu abri o Log do SmartGit no respectivo projeto Git e o Total Commander no respectivo diretório do projeto. Quando fechei os dois, consegui me recuperar novamente sem nenhum problema.
Quanto mais eu penso sobre isso, mais suspeito do Total Commander, ou seja, o Windows tendo um bloqueio no diretório aberto com o qual o rebit git estava tentando algo.
Conselho amigável: Ao tentar corrigir algo, sempre faça uma alteração de cada vez. ;)
fonte
Eu tentei todas as etapas acima mencionadas, mas nada funcionou para mim. Por fim, reiniciar o computador funcionou para esse problema: D
fonte
Com o SublimeText 3 no Windows, o problema é corrigido apenas fechando as janelas do Sublime usadas para a edição de confirmação interativa.
fonte
Depois de concluir satisfatoriamente o rebasing do número X de confirmações, o último comando deve ser
git rebase --continue
. Isso conclui o processo e sai do modo rebase.fonte
Eu tive o mesmo problema. Eu usei o Process Explorer como sugerido em outro post (não consigo encontrar esse post) e descobri qual processo tem um bloqueio no arquivo e o mata. execute o --continue ou --abort conforme as necessidades
fonte
No meu caso, depois de testar todas essas opções e ainda ter problemas, tentei
sudo git rebase --abort
e fez a coisa todafonte
tentei de tudo, menos uma reinicialização, o que funcionou para mim é
rm -fr .git/REBASE_HEAD
fonte
Se você ficar abaixo do estado e rebase não funcionar mais,
Então primeiro corra,
E, em seguida, restaure o estado anterior do reflog,
Usando,
fonte
Estou usando o git no eclipse e estava tendo o mesmo problema.
Eventualmente, descobri que a entrada do menu "Rebase ..." foi transformada temporariamente em um submenu.
Equipe-> Rebase -> Abortar
Funcionou para mim.
fonte