"git rebase --interactive"在尝试重新排序时默默地丢弃提交

Top*_*her 3 git msysgit git-rebase

我注意到我在运行时默默地丢失了提交git rebase --interactive,因此我在一个简单的仓库中重新创建了这个问题进行测试.

我有四个提交,我想重新排序其中两个.这是我的开始提交:

55d4ca6 1  <-- origin/master  
d70d325 2  
b613c5b 3  
2bd1177 4  <-- master
Run Code Online (Sandbox Code Playgroud)

每次提交都独立于其他提交; 他们都操纵不同的文件.我想重新排序提交以切换提交2和3.我将要执行此操作git rebase --interactive origin/master.正如预期的那样,运行该命令会按顺序在vim窗口中提交我的提交:

pick d70d325 2  
pick b613c5b 3  
pick 2bd1177 4
Run Code Online (Sandbox Code Playgroud)

我要交换提交2和3,所以我在vim中对它们进行重新排序,如下所示:

pick b613c5b 3  
pick d70d325 2  
pick 2bd1177 4
Run Code Online (Sandbox Code Playgroud)

我希望交换这两个提交,如下所示:

55d4ca6 1
bf330a8 3  
5c6f9af 2  
7cb8db1 4
Run Code Online (Sandbox Code Playgroud)

实际上,我的一个提交已经完全消失了,我的回购留下了这个:

55d4ca6 1  
7de7fb0 3  
10fc3a7 4
Run Code Online (Sandbox Code Playgroud)

我使用rebase --interactive不正确吗?或者这是Git中的错误?

我正在使用最新的Window Git版本(1.9.5.msysgit.0).在过去的几个月里,我已经注意到了这个问题.

编辑1:用文本替换vim和gitk图像.如果你想看到我所看到的确切内容,请查看原始问题修订版.

Top*_*her 5

由于快捷方式,我实际运行的命令是git rebase --interactive --preserve-merges origin/master.在git rebase文档的BUGS部分中列出了一起使用这些命令并尝试重新排序提交.

BUGS部分的问题完全等同于我上面描述的问题,并且可能更好地解释发生了什么.

答案是:在尝试重新排序时,您将删除提交rebase --interactive --preserve-merges.不要将两者结合使用.