Git合并及调整commit顺序

git 合并不相邻的commit

Git基本操作应该不都会, 但有些高级用法还是不会, 如我想合并commit及调整commit顺序怎么搞?
今天主要来看一怎么合并commit;
另外如果想把合并的commit再提交到其它分支可以用cherry-pick, 解决分支之间commit调整;

合并多个commit神器: git rebase -i

1
git rebase -i 不需要编辑的commit的hash

(1) 假设我有以下commit, 想合并不相临的2和4

(2) 执行git rebase -i


看来下面界面;

来看pick这些参数, 上图已经有英文说明:

参数:
pick:正常选中
reword:选中,并且修改提交信息;
edit:选中,rebase时会暂停,允许你修改这个commit(参考这里)
squash:选中,会将当前commit与上一个commit合并
fixup:与squash相同,但不会保存当前commit的提交信息
exec:执行其他shell命令

(3) 把上图commit调整为

1
2
3
pick 515fbbf third commit
pick a389afe 4th commit
squash 8a7becf second commit

wq保存进入commit信息编辑页, 修改commit修息, 这里没有修改直接再wq

注意: 这里是可以调整顺序的, 有这里调整顺序就修改commit顺序.

(4) 调整顺序后再squash结果:

4th commit和second commit已经合并了