rebase可以合并压缩commit

假设当前有4次commit,分别为

commit b00098b9c53c79a7bd6997b737e12aa8378e8d8c
Author: 
Date:   Mon Feb 12 10:19:41 2018 +0800

    modify 4

commit cd9827509576771dd1f9ad946faebc75d81073ae
Author: 
Date:   Mon Feb 12 10:19:33 2018 +0800

    modify 3

commit 592f9a95b1790816ec9fc6eaf9b8781f7fd1b6de
Author: 
Date:   Mon Feb 12 10:19:25 2018 +0800

    modify 2

commit 30999b3b06a1b9508aed574a3e5f73052800292a
Author: 
Date:   Mon Feb 12 09:26:01 2018 +0800

    modify
  1. 选取合并commit

1) git rebase -i HEAD~3

其中合并的commit为最新的(HEAD指向)3次commit

2) git rebase -i 30999b

选择 30999b commit之前的所有commit (不包含30999b)

  1. 选择合并策略

常用的合并策略有三种,分别为:

1) pick

使用当前的commit,不会被合并

2) reword

使用当前的commit,不会被合并,并且可以编辑commit信息

3) squash

合并当前commit至之前的commit (提交时间在当前commit之后的commit)

所以在此场景下,我们只需要修改第二和第三个commit为squash即可与最新的提交30999b进行合并。

保存退出之后,必须使用 (我这里直接自动进行了continue,不许输入以下命令)

git add .
git rebase --continue

来应用这次合并。假如想要放弃之前的合并,则需要

git rebase --abort

来取消。

之后通过

git push -f

来推送到远程分支。

共 0 条回复
暂时没有人回复哦,赶紧抢沙发
发表新回复

作者

sryan
today is a good day