注意:此命令是应用在未push之前的操作,push后禁用此命令
1、将几个连续的commit合并为一个commit
git log -6 --oneline
aeff454 (HEAD -> master) delete 4 line
cb7c41b delete 3 line
01a8d93 delete 2 line
0bda9b7 delete 1 line
23104e3 mas commit
8a7bab5 mas and dev merge commit
我们将以下三个分支合并为一个分支
cb7c41b delete 3 line
01a8d93 delete 2 line
0bda9b7 delete 1 line
需要选择基础(父)commit( 23104e3 mas commit)
git rebase -i 23104e3
弹出编辑页面,将以下两个分支前面的’pick’ 改成 ‘s’,0bda9b7 delete 1 line不用改因为它是需要提交的commit
pick cb7c41b delete 3 line
pick 01a8d93 delete 2 line
编辑保存后会弹出提示添加操作描述
merge delete 2 with delete 3 delete 1 line
保存后返回命令行
[detached HEAD ae6bd60] merge delete 2 with delete 3 delete 1 line
Date: Fri Feb 1 15:54:38 2019 +0800
1 file changed, 4 deletions(-)
Successfully rebased and updated refs/heads/master.
Successfully 成功了
再来查看commit tree
git log -6 --oneline
85a6c64 (HEAD -> master) delete 4 line
ae6bd60 merge delete 2 with delete 3 delete 1 line
23104e3 mas commit
8a7bab5 mas and dev merge commit
6e81f4c mas modify commit
5fe0e8c dev mofify commit
2、将几个不连续的commit合并为一个commit
git rebase -i 23104e3
弹出编辑页面,将以下两个分支前面的’pick’ 改成 ‘s’,0bda9b7 delete 1 line挪到要合并的分支后边,并修改成s
pick cb7c41b delete 3 line
pick 01a8d93 delete 2 line
pick 0bda9b7 delete 1 line
pick cb7c41b delete 3 line
s 0bda9b7 delete 1 line
pick 01a8d93 delete 2 line
编辑保存后会弹出提示添加操作描述
其他操作和连续的commit修改是一样的