gpt4 book ai didi

git - 挑选正确的方式来向后移植和整合主题分支修复是正确的吗?

转载 作者:太空狗 更新时间:2023-10-29 14:15:26 25 4
gpt4 key购买 nike

这是我的场景:

假设我想修复 github 上的一个开源项目。在高层次上,我遵循以下工作流程:

  • 在github上fork源码
  • 在本地克隆分支
  • 在 master 之外创建一个主题分支
  • 做出我的修复(在这里挥手不相关的细节...)
  • 推送主题分支到github
  • 向原始源项目提交 pull 请求

好的,现在假设我已经这样做了几次,所以我有名为问题#123 和问题#456 的主题分支。原始源码项目,除了master分支,还有release分支,例如1.0、1.1 等

我有自己的独立项目,该项目使用此开源项目的 1.1 版。我不想针对开源项目的“master”进行构建,因为它还不稳定。我需要的是开源项目 1.1 分支的本地构建,其中还包括我对问题#123 和问题#456 的修复。

对于冗长的设置感到抱歉......无论如何,我目前正在做的是创建一个名为 my-1.1 的本地分支(从 1.1 分支出来),从我的主题分支中挑选修复,然后构建它并使用结果在我单独的依赖项目中。

我不是 100% 确定 cherry-pick 是正确的方法,但 merge 似乎不正确,因为我不希望 master 的所有 1.1 后更改(它们存在于我的主题分支)流入“my-1.1”分支。这是最好的方法吗?有什么需要注意的陷阱吗?

我能想到的唯一其他方法是为每个修复创建重复的主题分支,一个在 master 分支中,一个在 1.1 分支中。然后我可以将基于 1.1 的主题分支 merge 到 my-1.1 中,而不是从基于 master 的主题分支中挑选提交。但这似乎是个大麻烦。

最佳答案

没有。这是 git rebase 的完美用例。假设您的主题分支是从 master 分支出来的 topic123。相反,您希望它从 1.1 分支出来。只需发出此命令:

git rebase --onto 1.1 master topic123

假设 topic123 不依赖于 1.1master 之间引入的代码,那就没问题了。如果它确实依赖于该代码,那么整个练习无论如何都会失败,因为您依赖的是 1.1 版本之后的代码。

git checkout 1.1 && git merge topic123

对所有主题分支重复此操作。您已经在您的远程分支上发出了 pull 请求,因此假设您已经完成了对它们的编码,主题分支的本地副本具有较旧的 merge 基础这一事实并不是什么大问题。那写的,如果你想把它们放回 master 之上,只需反转参数:

git rebase --onto master 1.1 topic123

或者,如果您不想处理强制推送,请重置为远程副本:

git reset --hard <repo>/topic123

关于git - 挑选正确的方式来向后移植和整合主题分支修复是正确的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12289458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com