You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确将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:
    git checkout <你的feature分支名>
    git rebase master
    
    要是团队没特殊要求,习惯留merge节点,就用merge:
    git checkout <你的feature分支名>
    git merge master
    
    这一步出冲突就正常对照业务逻辑解决,千万别手贱删你feature分支上留着的最早那半部分已经写好的代码,解决完走完rebase/merge的提交流程就行。
  • 第三步:处理老的revert提交带来的代码丢失问题
    先翻master的提交日志,找到你当时回滚半完成代码生成的那个revert提交,这个提交的备注默认带Revert "xxx"的前缀,一眼就能找到,复制它的commit hash。
    要是你们团队是走PR/MR合代码(绝大多数团队协作都是这个模式),不用动master,直接在当前feature分支上把这个revert提交撤销就行,相当于把最早那半部分代码的改动重新加回来:
    git revert <刚才找到的revert提交的hash值>
    
    要是你本身就有master的直接操作权限,也可以切回master执行上面的revert命令,提前把半完成代码恢复到master,解决掉这步可能出的冲突(基本都是和其他开发者新提交代码的兼容问题)就可以。
  • 第四步:合入代码+验证
    走PR流程的,现在你的feature分支里已经包含了三部分内容:最早的半版实现、你后续写完的剩余功能、其他开发者提交的最新master改动,直接提PR走正常评审合入就行。
    能直接操作master的,切回master把处理好的feature分支合并进来:
    git checkout master
    git merge <你的feature分支名>
    
    合完一定要跑一遍全量功能验证,确认没丢代码、没因为冲突引出逻辑bug,验证过了再把master推到远端。

内容的提问来源于stack exchange,提问作者Pubudu Mahesh Meththananda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 01:54:32