背景
合并代码可以选择git merge和git rebase,两者的区别是git rebse可以让你保留一条直线提交历史记录,方便查看。merge则不会。
操作命令
根据git flow规范,feture分支都是基于develop分支切的,我们开发完自己的feature分支以后,可以进行git rebase origin develop,然后再切到develop分支进行merge操作,当然你执行git rebae origin develop以后,也可以直接在github上执行PR操作,即pull request。
综上,主要2个步骤:
- git rebase
- git merge
多一步git rebase是因为我想让develop分支上面保留一条直线历史提交记录,然后这样比较方便看提交记录,不至于那么乱。
具体命令:
比如我开发完feature/1225分支了以后,我现在要进行git rebase和git merge操作
- git rebase
git fetch --all && git rebase -i origin/develop
1、如何将feature/1225分支 的多个commit合并成一个?
你运行上述命令以后,会跳到另外一个页面,你将除了第一个pick,后面所有的pick 改成s,然后按下esc键,然后wq退出
2、如何将feature/1225分支 的多个commit msg合并成一个?
删除留下一个即可。
- git merge
发起PR即可
总结:
rebase 特点:会合并之前的commit历史
优点:得到更简洁的项目历史,去掉了merge commit
缺点:如果合并出现代码问题不容易定位,因为re-write了history
如果你想要一个干净的,没有merge commit的线性历史树,那么你应该选择git rebase
如果你想保留完整的历史记录,并且想要避免重写commit history的风险,你应该选择使用git merge
注意:
合并时如果出现冲突需要按照如下步骤解决
- 修改冲突部分
- git add
git rebase --continue
- (如果第三步无效可以执行
git rebase --skip
)
不要在git add 之后习惯性的执行 git commit命令。