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

时间:2014-12-23 20:26:39

标签: git git-rebase msysgit

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

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

55d4ca6 1  <-- origin/master  
d70d325 2  
b613c5b 3  
2bd1177 4  <-- master

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

pick d70d325 2  
pick b613c5b 3  
pick 2bd1177 4

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

pick b613c5b 3  
pick d70d325 2  
pick 2bd1177 4

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

55d4ca6 1
bf330a8 3  
5c6f9af 2  
7cb8db1 4

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

55d4ca6 1  
7de7fb0 3  
10fc3a7 4

我是否错误地使用rebase --interactive?或者这是Git中的错误?

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

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

1 个答案:

答案 0 :(得分:5)

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

BUGS部分的问题与我上面描述的问题完全相同,可能会更好地解释发生了什么。

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