我有一个“主”存储库,我克隆它并在克隆中进行一些更改。与此同时,“main”中还有其他更改,所以我将它们拉出并 merge 到我的克隆中。我在克隆中进行了更多更改,并 merge 了“main”中的任何其他新更改。这给了我这张图:
当我在克隆中完成工作后,我推送到主存储库,现在“主”中的图形如下所示:
我知道它们在拓扑结构上相同,但对我来说第一个更清楚(这是一个非常简单的情况,但事情可能会变得更复杂)。
有什么办法可以避免这种情况吗?我找到了 this question关于事后重新排序图表,但我在想我的工作流程中可能存在问题,或者我可以通过更改来防止出现问题。
最佳答案
问题是图表是按修订号排序的,而不是按修订日期排序的。这实际上是按修订出现在当前存储库中的日期/时间排序。 thg 项目中有一个 Unresolved 问题,允许按修订日期对列表进行排序,但其中一位开发人员表示,此更改需要涉及隐藏图表,因为他认为重写绘图器对于 yield 太少(问题是 here )。
据我所知,没有涉及 merge 的工作流程可以修复它,因为如果在多个存储库上执行工作,则不同存储库上的修订将永远不会以相同的顺序进行。
整理树的一种方法是在提取更改后使用 rebase
而不是 merge
。这将导致没有 merge 的单个分支,因为它重写历史以使其看起来好像您的 draft
修订是在您刚刚提取的更改之后实现的。如果您想阅读 rebase
,该信息是 here .
关于mercurial - 如何保持 mercurial graph "flat",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14828909/