我们在开发的过程中,有可能需要修复线上的bug,也有可能拉取新的分支开发新功能,也有可能你的代码写到其它分支上面了,
1、git merge
什么时候我们需要git merge?例如我们需要修复线上已有的bug或者我们在分支上开发了新功能
例如我们现在master分支上有个问题需要修复,我们可以以master为基础切换一个hot-fix分支,然后在上面进行修改,修改完成之后,经过测试,完成,合并到master上进行上线。如下图
最后执行push推送到远端服务器上面。
2、git cherry-pick
有时间我们不小心把我们的代码写错了分支,或者在其他分支上开发功能,但是又提交了新功能不想上线(别问题我为什么,我TMD的也不知道为什么,为什么会开发错误,为什么不再单独拉分支,并不是所有的开发都是合格的开发,他不管你怎么运维,觉得自己敲个代码功能能用就好了,按管你项目怎么管理,总之就是要你挑几个提交出来合并,你看着办)。这个时候我们就需要用到git cherry-pick
如上图,我只想把标红线这个提交合并到master怎么办呢?如下图:
git cherry-pick d309e21afa4d86588bc22450e205f4c1393d44bf,其实这个命令可以同时多个commit进行同时合并 ,后面跟随多个commit id 就可以同时合并多个提交到当前分支
3、git rebase
这个命令叫做变基,git merge相似,但是这个回改变git 显示的脉络,同时会回收一些无用的提交,减少git的磁盘空间,不推荐用这个命令,需要了解的可以自行百度。