【问题标题】:Rebase feature from another feature to develop从另一个特性中变基特性来开发
【发布时间】:2020-05-13 16:34:20
【问题描述】:

好的,所以我正在做一个大学项目,我们正在使用 git,我们有一个规则,每个功能都使用自己的分支,完成后它们合并到开发中。我的同事从另一个特性分支开始了一个特性分支。该功能(功能2)与功能1的分支没有连接情况:

             I    <-feature3
            /
A--B--C----H      <-develop
    \     /
     D---E--F     <-feature1
             \
              G   <-feature2

现在我需要来自提交 G 的内容到我的功能中,所以我将它合并到功能 3 中,然后才意识到这样做我也会从提交 F 中获取内容(我认为它应该是基于开发的)。

             I--J   <-feature3
            /   |
A--B--C----H    |   <-develop
    \     /     |
     D---E--F   |   <-feature1
             \ /
              G     <-feature2

所以现在提交 J 包含提交 F 和 G(此图还显示了原始状态,而不仅仅是本地 repo)。有没有办法重新设置功能 2,以便获得下图并且功能 3 丢失提交 F?

              I--J  <-feature3
             /  /
            /  G    <-feature2
           /  /
A--B--C----H-/      <-develop
    \     /      
     D---E--F       <-feature1

也可以将此更改推送到原点吗?

【问题讨论】:

    标签: git rebase


    【解决方案1】:

    听起来你在描述一个樱桃采摘。它不会像您的最终图表那样做,但是,该图表似乎不必要地复杂化。精选的 G 确实抓住了从 F 到 G 的变化并将它们粘贴在 J 之后,这听起来就像你真正追求的那样。

    【讨论】:

    • 首先,在 J 之后我做了更多的提交,所以我不知道这是否会影响任何事情。对我来说,如果我还没有合并,但现在功能 3 包含功能 2(提交 G)但它也从功能 1 获得提交 F,似乎樱桃选择会起作用。我想摆脱提交 F 而不是再次提交 G
    • 是的,但是您可以轻松地回滚到合并之前。
    • 换句话说,我的建议是你首先应该做的。但这是 git,因此您实际上可以回到过去并执行而不是您所做的。
    • 这似乎是一种选择,我必须做一些工作才能回到原来的位置,但我可以做到。回滚以提交 I 并将更改推送到原点会使原点和我的本地 reko 都回到第一个图吗?
    • 是的,如果我意识到功能 2 不是基于开发的,我同意我应该这样做
    猜你喜欢
    • 2018-06-29
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多