压缩第一次和第三次提交(留下第二次未撤销)

时间:2013-03-19 15:04:53

标签: git git-rebase squash

假设我的仓库中有以下历史记录:

git log --oneline    
<3rd sha1> Third commit.
<2nd sha1> Second commit.
<1st sha1> First commit.

如何将第三次提交压缩到第一次提交而不保持第二次提交?

1 个答案:

答案 0 :(得分:6)

我做到了:

  1. 清理我当前的变化(藏起来)。
  2. git rebase -i HEAD~3
  3. 编辑:

    选择&lt; 2nd sha1&gt;第二次提交。

    选择&lt; 1st sha1&gt;第一次提交。

    squash&lt; 3rd sha1&gt;第三次提交。

  4. 解决了coflict:error: could not apply <2nd sha1>... Second commit.

  5. git rebase --continue
  6. 使用第二个提交消息触发了文本编辑器,我保留了它。
  7. 解决了coflict:error: could not apply <1nd sha1>... First commit.
  8. git rebase --continue
  9. 使用第一个提交消息触发了文本编辑器,我保留了它。
  10. 文本编辑器被解雇,要求提交消息以压缩第一次和第三次提交,我输入了一条新消息(First commit (squashed).)。
  11. 然后就完成了。

    git log --oneline

    git log --oneline    
    <2nd sha1> Second commit.
    <1st sha1> First commit (squashed).
    

    我成功地做到了,发生的冲突应该发生并且很容易解决。

    我对结果非常满意,但无论如何我想知道是否有更好的方法来实现这一目标。