我有一个看起来像这样的存储库...
-+----*----*------*------------------------- 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
不要进行变基,而是尝试将 Main 合并到 Dev (
git merge Main
)。这将保留您的合并历史记录而不将其展平。如果您坚持使用 rebase,手动调整 todo 脚本会有所帮助,但这很棘手。