我在本地的Git仓库中搞糊涂了。我试图按照下面的步骤来修复一个损坏的提交记录。但在运行"git commit --amend"(和git rebase --interactive之后),我发现我的更改是不正确的,所以我执行了"git reset HEAD --hard"。告诉你一个不好的消息,现在交互式的rebase似乎“卡住”了。Git显示当前分支为(|REBASE-m)。我仓库中的每个命令(cd..、ls、git rebase...)都会给出以下错误:
cat: .git/rebase-merge/head-name: No such file or directory
这里是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
这是执行 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
任何想法?我希望将情况重置回我开始深思熟虑的变基操作之前的状态。以下是git log --oneline显示当前情况:
4c737fb Revert "Modified file names"
247ac02 Modified file names
33141e6 Message modifications
10a4a04 Modified db script
这很好。
我正在使用msysgit v1.7.0.2。
--quit
起作用了。--abort
没有起作用,因为rebase在一半的时候被取消了。 - Kalob Taulien$ git rebase --abort
,但输出显示error: could not read '.git/rebase-apply/head-name': No such file or directory
。最后,这个解决方法修复了我的问题:git rebase --quit
。 - affgit rebase --quit
真的救了我。我的症状与描述的一样,但是我的情况是在尝试执行git pull --rebase
时出现错误。请注意,我启用了自动存储 (git 版本 2.27.0.windows.1),同时还有 VS2019 运行 (指向该仓库) - 怀疑这两者的某种组合造成了问题。 - ErrCodegit rebase --quit
之后必须重新执行所有的rebase操作,因此我首先备份了整个树,但是在退出并重新开始rebase后,没有冲突需要解决!我可能受益于在rebase开始前设置的"rerere"配置。https://git-scm.com/book/en/v2/Git-Tools-Rerere - Mark Stosberggit rebase --quit
将清除.git/rebase-merge
文件夹,包括自动存储。如果您有一个自动存储(使用git rebase --autostash
),请确保在运行此命令之前保存其提交哈希(在.git/rebase-merge/autostash
中找到),以便您可以轻松地使用git stash apply <hash>
重新应用它。 - kagmole