如何正确将feature branch保留的回退改动提交至master branch
正确操作流程
最容易踩的致命坑:别直接把feature分支往master合。master上留着你之前回滚半完成代码的revert提交,Git会默认这部分半完成代码是你主动删掉的废弃内容,直接合并的时候不会把这部分代码带回来,最后合完的代码直接缺一半功能,线上必炸。
按下面的步骤走不会出问题:
- 第一步:同步远端最新master到本地
切到本地master分支,拉完所有远端最新提交,保证本地master和远端状态完全一致,别拿过期代码操作:git checkout master git pull origin master - 第二步:把master的新改动同步到你的feature分支
切回你自己的feature开发分支,把master上其他开发者提的新代码同步过来,用rebase还是merge看你们团队的规范就行:
要是团队要求提交历史是线性的,就用rebase:
要是团队没特殊要求,习惯留merge节点,就用merge:git checkout <你的feature分支名> git rebase master
这一步出冲突就正常对照业务逻辑解决,千万别手贱删你feature分支上留着的最早那半部分已经写好的代码,解决完走完rebase/merge的提交流程就行。git checkout <你的feature分支名> git merge master - 第三步:处理老的revert提交带来的代码丢失问题
先翻master的提交日志,找到你当时回滚半完成代码生成的那个revert提交,这个提交的备注默认带Revert "xxx"的前缀,一眼就能找到,复制它的commit hash。
要是你们团队是走PR/MR合代码(绝大多数团队协作都是这个模式),不用动master,直接在当前feature分支上把这个revert提交撤销就行,相当于把最早那半部分代码的改动重新加回来:
要是你本身就有master的直接操作权限,也可以切回master执行上面的revert命令,提前把半完成代码恢复到master,解决掉这步可能出的冲突(基本都是和其他开发者新提交代码的兼容问题)就可以。git revert <刚才找到的revert提交的hash值> - 第四步:合入代码+验证
走PR流程的,现在你的feature分支里已经包含了三部分内容:最早的半版实现、你后续写完的剩余功能、其他开发者提交的最新master改动,直接提PR走正常评审合入就行。
能直接操作master的,切回master把处理好的feature分支合并进来:
合完一定要跑一遍全量功能验证,确认没丢代码、没因为冲突引出逻辑bug,验证过了再把master推到远端。git checkout master git merge <你的feature分支名>
内容的提问来源于stack exchange,提问作者Pubudu Mahesh Meththananda
相关产品推荐
相关产品推荐

