简单的提交重新排序的Git rebase失败而不执行任何操作

时间:2017-06-15 10:54:29

标签: git rebase git-rebase

我正在尝试重新排序3次提交。

我目前的情况是:

A -> B -> C

我想重新定义并解决这个问题:

A -> C -> B

(只需交换提交BC

我运行命令git rebase -i A

我的编辑器打开了,我改变了选择并保存。 没有任何事情发生。

我注意到以下内容:

当我运行rebase命令时,我的编辑器会打开,但我已在终端中看到以下内容:

Successfully rebased and updated refs/heads/master.
rm: cannot remove `/path/to/git/repo/.git/rebase-merge': Directory not empty

即使我在运行rebase命令后仍然没有任何(我在编辑器中没有编辑任何东西)。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

起初可能看起来不像它,但这基本上是How can I use gvim for svn commit messages under Windows?的副本。也就是说,这是一个vim / gvim标志和/或设置问题。 (这个问题通常发生在许多基于GUI的编辑器上,而不仅仅是gvim,但每种编辑器的解决方法取决于基于GUI的编辑器。)你告诉Git运行gvim,而Git以gvim提供的方式实现这一点。 “请编辑此其他文件”请求到其自身的单独实例。

在发出请求后,Git运行的gvim说:“一切都完成了!”它成功退出,Git认为这意味着“所有已完成编辑”。 Git读取文件,当然已完成 - gvim的一些其他实例现在正在运行,允许您编辑指令文件 - 并且Git看到原始未更改的文件和做了无操作的退款。

治愈是指示Git运行的gvim,等待所请求的文件编辑完成。然后当Git运行的gvim退出时,文件 完成,Git可以继续读取它。我不使用这种特殊的编辑器和模式,因此不知道-f作为启动标志,或.vimrc设置(set guioptions+=f)是否优越。

(旁白:由于gvim在其中创建了.swp文件,因此无法删除目录。)