You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过Git Rebase合并上游分支Commit并创建正确的Merge Request?

嘿,我完全get到你的需求了——就是想把自己工作分支的提交,干干净净地“叠”在最新的develop分支提交上面,然后顺利创建合并请求对吧?下面是一步步的具体操作,我会把每个环节讲清楚:

1. 先把本地的develop分支更到最新

首先得确保你本地的develop是远程最新的状态,不然变基会基于旧版本,后续还是会有问题:

git checkout develop
git pull origin develop
2. 切换到工作分支执行变基

回到你的working_branch,把它变基到刚更新的develop上,这样Git就会把你在工作分支的所有提交,重新应用到develop最新提交的后面:

git checkout working_branch
git rebase develop

处理冲突(如果有的话)

如果你的代码和develop上的新提交有冲突,Git会暂停变基并提示你解决冲突。你只需要:

  • 打开冲突的文件,手动修改冲突部分
  • 把修改好的文件标记为已解决:git add <冲突的文件名>
  • 继续变基流程:git rebase --continue
    要是中途不想变基了,直接执行git rebase --abort就能回到变基前的状态。
3. 推送变基后的工作分支到远程

因为变基会改变提交历史,远程的working_branch和你本地的已经不是一条线了,所以需要用强制推送(注意:如果这个分支有其他同事在协作,一定要先确认没人在上面做修改,不然会覆盖别人的工作!):

git push origin working_branch --force-with-lease

--force-with-lease比直接--force安全得多,它会先检查远程分支有没有别人的新提交,避免误操作。

4. 创建合并请求(Merge Request)

这一步就很直观了:

  • 打开你的Git托管平台(比如GitLab、GitHub),找到你的working_branch
  • 发起合并请求,目标分支选择develop就行
  • 因为你已经把工作分支变基到最新的develop上了,MR里只会显示你自己的提交记录,整个分支历史会非常干净,没有多余的合并节点

这里要澄清一下:你根本不需要推送develop分支啊!你变基的是自己的工作分支,develop分支你从头到尾都没修改过,你的合并请求本来就是要把working_branch合并到develop,所以直接基于变基后的working_branch创建MR就完全没问题。

内容的提问来源于stack exchange,提问作者Tim Schwalbe

火山引擎 最新活动