Mercurial代码丢失

时间:2011-11-10 19:02:41

标签: version-control mercurial

我在Mercurial工作,最近我将一些变更集推送到了存储库。另一个人合并推了他们的东西。

此时我的一个文件在合并过程中丢失了编辑内容。我回溯跟踪文件以查看删除代码的位置,但我找不到任何明确删除行的情况。

有谁知道这里发生了什么?我看了,我上面的1个变更集不包含代码。这是一个合并变革集。

1 个答案:

答案 0 :(得分:4)

没有提交的代码行永远丢失。

合并只是一个包含两个父项的提交 - 合并可以包含或删除任何一个父代的任何代码。

棘手的部分是,用于查看代码可能被删除的常规命令(例如hg log -p)将变更集与其父变量进行比较,因此您只能使用查看相对于该父母的补充和删除。

例如,如果历史记录如下:

[A]--[B]--[D]
   \     /
    -[C]-

(其中A是B和C的父亲,D有两个父母B和C)

如果您在B中添加了更改,但是D的父级是C而D的右侧父级是B,那么当您运行hg log -p以查看补丁时你看到了:

  • A与无比相比
  • B与A< - 显示您添加的更改
  • C与A
  • 相比
  • D与C
  • 相比

这些都不会显示删除您的更改。要看到你需要D而不是B,你可以得到:

hg diff -r B -r D

所以合并的人抛出了你的代码,你可以挖掘一下来进行证明。