gpt4 book ai didi

mercurial - 在 Mercurial 中,如何 merge 不相关的存储库,只留下一个根?

转载 作者:行者123 更新时间:2023-12-02 00:08:57 25 4
gpt4 key购买 nike

我有一个项目的 4 个版本。版本 1-3 是最初不受源代码控制的“原型(prototype)”(它们作为文件系统中的单独目录存在)。版本 4 从一开始就受到源代码控制,现在有很长的提交历史。

我想 merge 这些,以便版本 1-3 成为单独的变更集,其中每个变更集都是前一个变更集的后代。版本 4 的根应该成为版本 3 的后代(当然不会崩溃版本 4 的历史)。

所有更改都是私有(private)的,而不是公开的(可以说重写历史没有问题)。

到目前为止我所做的和尝试的事情:
1. 我在原型(prototype)版本的目录中设置了新的 hg 存储库
2.我克隆了版本4的仓库
3. 我将版本 1-3 的不相关存储库(使用 hg pull --force)拉入克隆的存储库中。

这在单个存储库中为我提供了 4 个不相关的“根”(没有祖先的变更集)。当我将它们结合起来时,我不想记住这 4 个根。 hg rebase 应该让我移动变更集并销毁原件,这与 hg merge 不同。

在这里,我将使用 101 作为“版本 1”的修订版(这是一个没有父级的单一变更集),使用 102 作为“版本 2”的修订版".

尝试 1:我尝试 hg rebase -b 102 -d 101 但得到响应 nothing to rebase。大概这是因为他们没有共同的祖先(我觉得这不一致...... -b 102 将包括所有祖先除了共同的祖先,这在这种情况。)

尝试 2:我尝试 hg rebase -s 102 -d 101。这会导致 merge 冲突。我执行 hg revert --all --rev 102hg resolve -m 来表明我在所有冲突中更喜欢“版本 2”(尽管我想知道这是否真的是在添加/删除的情况下更喜欢一个 parent 而不是另一个 parent 的正确方法?)。但是当我提交时,我没有线性历史 --- 修订版 102 仍然存在!

最佳答案

如果我将 hg rebase --continue 作为最终命令(而不是 hg commit),那么它将完美运行。

我没有阅读文档的最后一部分:
http://www.selenic.com/mercurial/hg.1.html#rebase

关于mercurial - 在 Mercurial 中,如何 merge 不相关的存储库,只留下一个根?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16628372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com