git rebase --rebase-merges 不保留合并顺序

问题描述 投票:0回答:1

我有一个看起来像这样的存储库...

-+----*----*------*-------------------------  Main
  \------------+---------+------+-- Dev
   \-*--*--*--/-*--*--*-/-*--*-/  Feature1

无论如何,这是我对 ASCII 艺术的最佳尝试。我实际上在 VS Code 中使用 gitgraph 来可视化我的存储库。

*
代表提交,斜杠代表合并。 所以基本上我在主分支上启动了一个开发分支。然后,我从 Dev 开始了一个名为 Feature1 的分支(无论如何都是为了这个示例的目的)。 经过几次提交后,我将Feature1合并到Dev中,但不断添加对Feature1的提交并合并到Dev中。 在此期间还有其他提交合并到 Main 中。

现在我想将 Dev 重新建立到 Main 上。所以我发出命令

git rebase MAIN --rebase-merges
。我期待的是这样的事情

  --*--*--*-+------------+---------+------+-- Main
             \-*--*--*--/-*--*--*-/-*--*-/  

我得到的更像是这样

  -*--*--*-+-----------------------------+--+--+
            \--------------------*--*---/--/--/
             \----------*--*--*--------/--/
              \--*--*-*---------------/

我尝试将

-i
传递给变基并编辑待办事项脚本。 它最后有所有的合并。 然后我尝试将它们移动到逻辑上应该去的地方,但最终我只得到一条平线,根本没有合并历史记录。

知道我做错了什么吗? 我在 Google 上搜索了 todo 脚本的文档,因为其中也有重置命令,但我不知道它们的作用或它们如何与合并命令交互。但谷歌搜索结果中存在太多噪音。许多旧结果推荐了多年前已删除的命令行选项。

如果我的开发分支看起来像这样,效果会更好吗?

  \------------+-----------+------+-- Dev
   \-*--*--*--/\--*--*--*-/\-*--*-/  Feature1
git rebase
1个回答
0
投票

不要进行变基,而是尝试将 Main 合并到 Dev (

git merge Main
)。这将保留您的合并历史记录而不将其展平。如果您坚持使用 rebase,手动调整 todo 脚本会有所帮助,但这很棘手。

© www.soinside.com 2019 - 2024. All rights reserved.