【问题标题】:Rebase feature branch onto another feature branch with revert commit使用 revert commit 将功能分支重新定位到另一个功能分支
【发布时间】:2019-12-17 05:02:28
【问题描述】:

我的问题类似于Rebase feature branch onto another feature branch

在处理某个功能时,我们错误地在“功能 1”分支 Commit C 中进行了提交,该提交被还原并为子功能创建了一个分支,然后樱桃选择了提交。

A - B - C - C"(Revert C) - D    -- Feature-1
     \ 
      C'(Cherry Pick C) - E - F - G   -- Branch-1

现在很少有错误修复被合并到功能 1 中,这是我的分支通过测试所需的。因此,我想重新设置分支 1,使其看起来像

A - B - C - C"(Revert C) - D    -- Feature-1
                            \ 
                             C'(Cherry Pick C) - E - F - G   -- Branch-1

我尝试使用 (On Branch-1)$ git rebase Feature-1 重新设置基准,但这并没有选择提交 C',因为它发现它已经存在于分支中。
我应该如何做变基?

【问题讨论】:

  • 你想删除 C' 吗?还是 C,或两者兼而有之?
  • @Julian:不要删除 C' 但保留它。因此,当变基时,它发现 C' 提交已经作为提交 C 存在于路径中。因此,在变基之后,C' 提交不会被选中。因此,Branch-1 看起来像 <previous> - D - E - F - G
  • 清除。我认为你可以再次选择 C
  • 在第一个提交图中。你确定它是 C' 而不仅仅是 C 吗?有什么理由不对两个分支重新排序并且不对功能 1 中的 C 进行还原?
  • @BlackEye: C'C 完全相同,只是它是樱桃采摘到不同的分支上。如何重新排序两个分支?问题是我们很晚才意识到提交 C 被添加到功能分支中

标签: git rebase


【解决方案1】:

如果你想让提交保持相同的顺序,你可以checkout 提交Dcherry-pick 提交C,然后跳回到Branch-1rebase 在新的@ 之上987654327@ 提交C。很可能有一种更有效的方法,但这是一种方法

  1. git checkout <hash of D>
  2. git cherry-pick <hash of C>
  3. git checkout Branch-1
  4. git rebase <hash of newly cherry-picked C>

步骤24 之间的中间树如下所示。

                             C'''(Cherry Pick C) (rebase on this)
                            /
A - B - C - C"(Revert C) - D    -- Feature-1
                            \ 
                             C'(Cherry Pick C) - E - F - G   -- Branch-1

你也可以创建临时分支而不是使用哈希,如果这样更容易考虑的话。

【讨论】:

    猜你喜欢
    • 2013-01-31
    • 2017-07-04
    • 2020-12-15
    • 2013-12-05
    • 2017-07-01
    • 1970-01-01
    • 2023-04-09
    • 2010-12-04
    • 1970-01-01
    相关资源
    最近更新 更多