如何从同一分支向两个不同分支发起MR?
问题解答
你不能直接拉取develop分支后就发起MR,这么做会把develop的代码合并到你的task/common分支里,导致你的分支混入develop的无关提交,后续向develop发起MR时会出现不必要的冲突或冗余代码。
正确的操作步骤应该是这样:
- 先确保当前task/common分支的所有改动都已经提交并推送到远程仓库。
- 切换到本地的develop分支,拉取最新的远程代码:
git checkout develop git pull origin develop - 基于最新的develop分支创建一个专门用来同步改动的新分支(比如命名为
task/common-sync-develop):git checkout -b task/common-sync-develop - 把task/common分支里的目标提交cherry-pick到这个新分支上:
# 单个提交用这个命令,替换成你要同步的提交哈希 git cherry-pick a1b2c3d # 如果是多个连续提交,用范围提交哈希 git cherry-pick a1b2c3d..e4f5g6h - 处理可能出现的代码冲突,解决后提交改动,再推送到远程:
git add . git commit -m "同步task/common的改动到develop" git push origin task/common-sync-develop - 最后发起从
task/common-sync-develop到develop分支的MR即可。
如果你的task/common分支和develop分支基线差异很小,且没有冲突,也可以直接发起从task/common到develop的MR,但这种方式风险较高——因为release和develop可能存在不同的代码版本,直接合并可能会把release分支的其他无关改动带进develop,所以更推荐用cherry-pick的方式精准同步你需要的改动。
内容的提问来源于stack exchange,提问作者Krishna Kumar
相关产品推荐
相关产品推荐

