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图像.如果你想看到我所看到的确切内容,请查看原始问题修订版.
由于快捷方式,我实际运行的命令是git rebase --interactive --preserve-merges origin/master.在git rebase文档的BUGS部分中列出了一起使用这些命令并尝试重新排序提交.
BUGS部分的问题完全等同于我上面描述的问题,并且可能更好地解释发生了什么.
答案是:在尝试重新排序时,您将删除提交rebase --interactive --preserve-merges.不要将两者结合使用.