【问题标题】:Changing the parent of a branch更改分支的父级
【发布时间】:2013-01-04 18:02:20
【问题描述】:

一段时间以来一直在寻找解决方案,由于我远不是 git 专家 - 即使我接近解决方案,我也无法稍微修改它来完成它。

我一直在尝试按照此处建议的方式工作:http://nvie.com/posts/a-successful-git-branching-model/,但由于匆忙以及在分支修补程序时没有做什么 - 我从 dev 而不是 master 分支。

简而言之,假设我们有以下历史:

A---B---C--------D---- < developer
\      / \      /
 R1--R2   H1---H2
       \         \
--------X---------Y--- < master

R1 和 R2 是发布分支提交并且很好。但是,H1 和 H2 是修补程序分支提交,并且 H1 应该从 X(主)分支,而不是 C(开发)。由于 X 和 C 提交背后都有相同的代码,是否可以从 X 中获得 H1 分支?

我想让它看起来像这样:

A---B---C--------D---- < developer
\      /        /
 R1--R2   H1---H2
       \  /      \
--------X---------Y--- < master

这根本不会更改代码,我只想保持一致并在应有的位置开始分支。事情是 - 稍后在 dev 和 master 分支上都有更多的提交。 H1-H2 分支基本上是一个多月的时间,后来有超过一百次提交。

正如我所指出的,我是一个 git 初学者,并且一直在玩 rebase 等等,但结果却大错特错。

有什么治疗方法吗?

【问题讨论】:

    标签: git git-branch branching-and-merging


    【解决方案1】:

    如果不重写 H1,然后再重写 H2,则无法做到这一点,这也意味着重写 D 和 Y。因此,所有提交都需要更改并重新发布。并且重新发布已经发布的提交通常是一个坏主意。所以如果不是太大的问题,你不应该这样做,保持原样。

    如果你还想这样做,你可以这样做:

    • 基于 X 创建一个新的(临时)分支。
    • 樱桃采摘H1;生成的 H1' 现在基于 X。
    • 樱桃采摘H2。
    • 将 master 重置为 X (git reset --hard X)。
    • 将临时分支合并到master中。
    • 删除临时分支。
    • 将开发人员重置为 C。
    • 将 master 合并到 developer。
    • 使用 force 选项发布两个分支。

    【讨论】:

    • 哦,好吧,我想我会坚持我得到的。谢谢。
    猜你喜欢
    • 2020-11-09
    • 2020-01-31
    • 2015-12-30
    • 1970-01-01
    • 2012-10-01
    • 2013-03-24
    • 2019-07-10
    • 2023-04-07
    • 1970-01-01
    相关资源
    最近更新 更多