git合并多个commit & 压缩合并
2020-05-10 本文已影响0人
码工人生
日常开发中,我们为了代码安全起见,经常会做完一点需求就进行一次commit。如果所做的需求比较复杂,可能会产生很多的commit。等需求开发完之后,想往主分支合并,或者让别人进行codeReview,commit次数太多看着就很麻烦,并且作为主分支也不想要这么多commit。所以学会将多个commit合并为一个节点就很有必要。以下将介绍两种方法实现多个commit节点合并为一个节点。比如我想把红框里三次提交合并成一个节点。
一、压缩提交

1.使用git rebase 命令,以下两种都可以
a. git rebase -i lastCommitID
注意这里的commitId 是倒数第四次的提交
git rebase -i b7d113e6
b. git rebase -i HEAD~3
3就是从最后一次开始倒数的次数
2.命令编辑
a.输入命令 vi ,进行编辑

b.当下面蓝色框为 INSERT 时,要把上面两个红色框 ‘pick’ 改为‘s’,表示第三次提交合并入第二次,第二次提交合并入第一次。
修改后如图:

c.按 ESC 键, 然后按'shift'+':' ,接着按 wq,回车退出。
3.修改提交记录(这个可修改也可不修改)

由于是把后面的提交合并到第一次提交里。所以可以修改第一次提交信息红色区域,改为你想要的提交信息。比如“完成合并多次提交功能”
至此,将多次commit合并为一次commit完成。再次查看git 记录:

二、压缩合并
比如我们在某个feature分支开发了一个功能,要合并入develop分支时。这个feature分支上有很多提交记录,而develop上并不需要展示某个feature上那么复杂的提交记录。这个时候就要用到压缩合并。
比如我在feature分支有了三次提交记录

此时我已经feature完成了功能,要合并入develop分支,但为了使develop分支不显示这么多节点,我们要开始以下步骤
1.使用压缩合并分支的名利
git merge <branch> --squash
2. 然后 git add . ,再git commit -m '提交信息'
至此,我们完成压缩一个分支合并到主分支功能,如图

通过git log -p commitID ,可以看到这次压缩合并的所有提交信息。