我是否正确使用git rebase?

时间:2018-12-08 05:47:10

标签: git

我有一个远程回购,包含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

我已经验证了远程提交历史记录看起来不错,但是我想知道我是否正在做一些我不应该做的事情,以及是否有更好的方法可以解决此问题。谢谢

2 个答案:

答案 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