I managed to create a little mess in my local git repository. I was trying to fix a broken commit by using the following instructions. Before running the "git commit --amend" (and after the git rebase --interactive) I decided that my changes were incorrect and so I executed "git reset HEAD --hard". Not a good idea, I tell you.
Now the interactive rebase seems to be "stuck". Git shows the current branch as (|REBASE-m). Every command (cd .., ls, git rebase...) inside my repository gives the following error:
cat: .git/rebase-merge/head-name: No such file or directory
Here's how git rebase --abort looks like:
$ 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
Here's the result of 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
Any ideas? I would like to reset the situation back to the state it was before I started my well-thought rebase operation.
Here's how git log --oneline shows the situation:
4c737fb Revert "Modified file names"
247ac02 Modified file names
33141e6 Message modifications
10a4a04 Modified db script
And this is fine.
I'm using msysgit v1.7.0.2.
It looks like Git tried to remove the .git/rebase-merge
directory but wasn't able to remove it completely. Have you tried copying that folder away? Also copy away the .git/rebase-apply
folder if that is present.
I had a similar problem due to a zombie vim.exe process.
Killing it in Task Manager, followed by a git rebase --abort
fixed it.
Had same problem in Eclipse. Could not Rebase=>abort from Eclipse.
Executing git rebase --abort from Git Bash Worked for me.
On Windows, if you are unwilling or unable to restart the machine see below.
Install Process Explorer: https://technet.microsoft.com/en-us/sysinternals/bb896653.aspx
In Process Explorer, Find > File Handle or DLL ...
Type in the file name mentioned in the error (for my error it was 'git-rebase-todo' but in the question above, 'done').
Process Explorer will highlight the process holding a lock on the file (for me it was 'grep').
Kill the process and you will be able to abort the git action in the standard way.
Create a file with this name:
touch .git/rebase-merge/head-name
and than use git rebase
In my case it was because I had opened SmartGit's Log in the respective Git project and Total Commander in the respective project directory. When I closed both I was able to rebase without any problem.
The more I think about it, the more I suspect Total Commander, i.e. Windows having a lock on opened directory the git rebase was trying to something with.
Friendly advice: When you try to fix something, always do one change at a time. ;)
Once you have satisfactorily completed rebasing X number of commits , the last command must be git rebase --continue
. That completes the process and exits out of the rebase mode .
I had the same problem. I used process explorer as suggested in other post (i am not able to find that post) and figured out which process has a lock on the file and kill it. then execute the --continue or --abort as per needs
In my case after testing all this options and still having issues i tried sudo git rebase --abort
and it did the whole thing
I'm using git version 2.19.2.windows.1
.
the only thing that worked for me was to remove the .git/rebase-apply/
directory and do a git reset --hard
.
I have tried all the above steps mentioned but nothing worked for me. Finally, restarting the computer worked for this issue :D
I am using git in eclipse and I was having the same problem.
Eventually I found that the "Rebase ..." menu entry was temporarily transformed into a sub-menu.
Team-> Rebase -> Abort
It worked for me.