我有一个远程回购,包含3个提交(A,B,C)。我想删除提交B,以便回购提交历史记录看起来像(A,C)。这是我正在执行的步骤:
运行命令git rebase -i HEAD~3
,该命令将在vim编辑器中产生以下输出
pick a3456bc commit A
pick ch7887j commit B
pick d45fffh commit C
2)将vim输出编辑为以下内容
pick a3456bc commit A
squash ch7887j commit B
pick d45fffh commit C
3)运行命令git push -f
我已经验证了远程提交历史记录看起来不错,但是我想知道我是否正在做一些我不应该做的事情,以及是否有更好的方法可以解决此问题。谢谢
答案 0 :(得分:1)
squash
将提交与先前的提交合并。因此,您要将B的更改放入A。如果要将它们放入C,保持A不变,则要选择B并压扁C:
pick a3456bc commit A
pick ch7887j commit B
squash d45fffh commit C
请注意,squash
将允许您编辑提交消息,并且该消息将被初始化为两条提交消息,因此很容易选择要保留的两条消息中的哪一条。
答案 1 :(得分:0)
您已将B中所做的所有更改都压缩到了A中。如果这是目标,那就很好。但是,如果通过“我要删除提交B,以使回购提交历史记录看起来像(A,C)”表示您不想保留在B中执行的更改,则只需在以下位置删除提交B的行:您的git rebase -i
:
pick a3456bc commit A
pick d45fffh commit C