gpt4 book ai didi

mercurial - 我可以在 Mercurial 中 merge 两个文件的历史记录吗?

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

我需要将两个类的功能 merge 为一个,但我想知道我是否也可以 merge 它们的更改历史记录?

这两个类都包含许多以前的更改,因此我想将它们的更改历史记录保存在一个地方以供引用。我可以在组合类中进行注释,但是在 IDE 中,获取已删除文件的历史记录并不是很容易。

最佳答案

为此,您需要将文件 merge 记录为 merge 变更集。

假设变更集 0 是您当前的头文件 A 和 B,您想要将其 merge 到文件 C 中。为此,请将文件 A 重命名为 C 并提交为变更集 1,然后更新回变更集 0,重命名文件 B到 C 并将其提交为变更集 2。接下来, merge 这两个变更集,组合它们的内容并删除剩余的文件 A 和 B。这会导致 C 的文件历史记录被注册为 A 和 B 的降序。最后,您可以将文件 C 重命名为 A。

生成的树如下所示:

0 [A, B] --- 1 [A, C] \
\ \
\ 2 [C, B] --- 3 [C] --- 4 [A]

命令行流程示例:

$ hg init
$ echo a > a
$ echo b > b
$ hg add a b
$ hg commit -m "add files a and b"
$ hg mv a c
$ hg commit -m "rename a to c"
$ hg update 0
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg mv b c
$ hg commit -m "rename b to c"
created new head
$ hg merge
merging c
warning: conflicts during merge.
merging c incomplete! (edit conflicts, then use 'hg resolve --mark')
0 files updated, 0 files merged, 1 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
$ ls
c c.orig
$ cat c
<<<<<<< local
b
=======
a
>>>>>>> other
$ echo ab > c
$ hg resolve --mark c
$ hg commit -m "merge a and b into c"
$ hg mv c a
$ hg commit -m "rename c back to a"

如果您现在输入 hg log -f a,您会注意到显示了两个文件的历史记录。

关于mercurial - 我可以在 Mercurial 中 merge 两个文件的历史记录吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10716873/

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