如何将Feature分支合并到Main分支顶端并避免提交重复?
解决Git分支线性合并需求(避免提交重复)
你的场景是:Main分支从ee68ee之后有一串提交,最终到f0faf9e;Feature分支基于ee68ee做了e994bd3提交,想要把这个Feature提交移到Main分支的最顶端,形成完全线性的提交历史。
之前用rebase出现提交重复,大概率是操作时选错了变基目标,或者后续合并步骤有误。按下面的步骤操作就能实现需求:
切换到你的Feature分支:
git checkout feature-branch(把
feature-branch换成你实际的Feature分支名称)基于Main分支的最新提交做变基:
git rebase main这个命令会把Feature分支上的提交(也就是
e994bd3)重新"移植"到Main分支的最新提交f0faf9e之后。如果过程中出现冲突,解决冲突后执行git add .,再用git rebase --continue完成变基即可。切换回Main分支:
git checkout main执行快进合并:
git merge feature-branch因为变基后Feature分支的提交已经在Main分支的提交链之后,Git会直接把Main的HEAD指针移到
e994bd3,形成你想要的线性历史:→ ee68ee → ff512e → ed038c → fc08ef4 → a62847 → f0faf9e → e994bd3(HEAD)
注意事项
如果你的Feature分支已经推送到远程仓库,变基会改写分支的历史记录,此时推送需要使用:
git push --force-with-lease
这个命令比--force更安全,会检查远程分支是否有你没同步的变更,避免覆盖他人的提交。如果是多人协作的Feature分支,执行变基前最好和团队成员沟通确认。
内容的提问来源于stack exchange,提问作者CyberPunk
相关产品推荐
相关产品推荐

