我设法在本地git存储库中创建了一个小混乱。我试图通过使用以下说明修复一个损坏的提交。在运行“git commit -amend”之前(在git rebase -interactive之后),我决定我的更改是不正确的,所以我执行了“git reset HEAD -hard”。我告诉你,这不是个好主意。

现在交互性的调整似乎被“卡住”了。Git将当前分支显示为(|REBASE-m)。每个命令(cd .., ls, git rebase…)在我的存储库中给出以下错误:

cat: .git/rebase-merge/head-name:没有这样的文件或目录

以下是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的结果——继续:

$ 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 - online如何显示这种情况:

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

这很好。

我使用的是msysgit v1.7.0.2。


当前回答

在Eclipse中也有同样的问题。无法Rebase=>从Eclipse中止。

从git Bash执行git rebase——abort对我来说很有效。

其他回答

我在eclipse中使用git,我也遇到了同样的问题。

最终,我发现“Rebase…”菜单项被临时转换为一个子菜单。

>组 变基>堕胎

这对我很管用。

我使用的是git 2.19.2.windows.1。

对我来说唯一有效的是删除.git/rebase-apply/目录并重新设置git——这很难。

我被困住了。我创建了head-name文件,然后我遇到了另一个错误,说它无法找到onto文件,所以我创建了那个文件。然后我得到了另一个错误,说无法读取。git/rebase-apply/onto':没有这样的文件或目录。

所以我查看了git文档,找到了另一个命令:

git rebase --quit

这让我回到了我的分支上,没有任何变化,我可以重新开始我的rebase,就像新的一样。

谢谢劳拉·斯洛克姆的回答

我把事情搞砸了,而重新建立和得到一个分离的头部

 error: could not read orig-head

这让我无法完成调整。

分离的HEAD似乎准确地包含了我正确的rebase期望状态,所以我运行了

rebase --quit

在那之后,我检查了一个新的临时分支,将它绑定到分离的头部。

通过将它与我想要调基的分支进行比较,我可以看到新的临时分支恰好处于我想要达到的状态。 谢谢

一旦你满意地完成了X次提交的重基,最后一个命令必须是git rebase—continue。这将完成流程并退出rebase模式。