首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将基于主题分支的更改合并到git中的不同主题分支。

将基于主题分支的更改合并到git中的不同主题分支。
EN

Stack Overflow用户
提问于 2011-04-21 19:35:41
回答 1查看 312关注 0票数 2

我的团队正在git中开发一个共享主题分支,我将称之为“topic1”。我在用topic1制作的分支上重构一些代码,我称之为“重构”。我一直在周期性地将topic1合并到重构中,这样我就可以保持最新的更改,但是没有将重构重新合并回topic1,因为重构仍在进行中。

还有另一个主题分支,我称之为"topic2“,它是最近创建的。我想做的只是将我在“重构”上所做的更改合并到topic2的一个新分支中,我称之为“topic2_refactor”。(也就是说,提交中的更改只能通过重构访问,而不能通过topic1访问)。

我知道如何看待这些变化:

代码语言:javascript
运行
复制
git log origin/refactor --not origin/topic1

所以,我想做的是这样的事情--但是这个语法不正确:

代码语言:javascript
运行
复制
git checkout topic2
git checkout -b topic2_refactor

然后这个:

代码语言:javascript
运行
复制
git merge origin/refactor --not origin/topic1

或者这个:

代码语言:javascript
运行
复制
 git cherry-pick origin/refactor --not origin/topic1

(上述情况似乎导致了不必要的合并冲突,这是由于主服务器上发生的一些更改,这些更改后来被合并回重构分支。)

我希望有一种干净的方法来做到这一点,避免不必要的合并冲突,这些冲突后来在“重构”分支的历史上得到了解决。这是否可以使用git重基、git过滤分支等?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-21 19:55:16

您可以使用git rebase选项尝试--onto。这允许重基操作根据“topic1”从“重构”分支获取它需要应用的差异,然后将它们应用于“topic2”。

代码语言:javascript
运行
复制
git co refactor
git co -b topic2_refactor
git rebase --onto topic2 topic1 # bases the diffs off of topic1, but applies them to topic2

你的成功可能各不相同。仍有可能发生有问题的冲突。这样做的缺点是,您现在将拥有两个具有相同更改的单独重构分支,但由于这是一个重基,因此如果您不小心的话,它们的历史会很容易发生差异(您必须不断地从一个分支选择到另一个分支或类似的分支)。

当topic1和topic2 (重构后)都需要再次合并到主服务器时,您可能会遇到麻烦,因为它们将有所有相同的重构提交。不过,吉特在这方面通常很不错。

由于重构似乎独立于这些主题分支,所以我会考虑将重构分支从母版重新定位,这样在重构完成后,您可以将这些更改合并到两个主题中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5748930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档