参考:https://blog.csdn.net/qq_50652600/article/details/120800309
在我们平时开发中,我们提交代码免不了要和git打交道,那么我们肯定是先从预发分支上(公司一般都用pre命名,这里为了方便演示用master)上拉去最新的代码,然后自己在上面在切一个自己的功能分支(gongeng)进行开发。
但是如果我们一个功能模块开发完了之后,肯定提交了许多次,如果我们想把这么多提交记录都merge到我们的master分支上,肯定是不友好和不雅观的。所以我们需要将我们许多次的提交记录合成一次的提交记录,在合并到我们的pre分支上。(多说一句:一般自己的功能分支上开发完成之后,肯定是先合并到测试分支上先测试通过的,然后再将功能分支的代码合并到预发分支,这里为了方便,省去了测试分支)
如果觉得命令行操作繁琐,不想用命令行操作,可以用idea图形化工具操作:idea–git–如何将多次commit合成一个点
1 进入仓库 查看commit (命令:git log)
由此我们可以看见我在自己的功能分支上提交了3次记录分别按照时间倒序排列
2 使用rebase命令进行变基(命令:git rebase -i HEAD~3)
pick:保留该commit
squash:将该commit和前一个commit合并
故如果我们想要将此3次提价合并成一个提交,需要将commit2和commit3的pick改成squnsh(缩写“s”)也可。如下图:
提示:按“i”键即可进入vim编辑模式进行修改,修改完成之后,按“esc”键进行退出,再次按“:”进入底线命令模式,输入“wq”进行保存后会自动出现commit message信息界面。此时我们可以根据情况保留或者删除多余注释
完成之后我们继续保存退出(可按照之前的提示操作)
3 再次查看记录(命令:git log)
4 强制推送到远程(命令:git push -f)
提示:由于我是自己新建的分支,没有与远端建立连接 所以需要执行git push -f --set-upstream origin gongneng 命令,大家在公司开始只需执行git push -f命令即可
现在我们在自己的功能分支上已经将多个点压成了一个点(多个分支合成一个分支),现在只需将这一个点cherry-pick到我们的预发分支即可。