Mercurial hg stat错误地将文件显示为已移除 - 为什么?

时间:2013-08-22 20:47:19

标签: mercurial

现在我运行hg stat并在我验证过的文件旁边有一个大的红色R

我来到这里:使用hg rename,尝试恢复到预重命名版本(顺便说一句,不起作用),然后将.orig复制回原始文件名。

但现在我还有大R。我可以通过调用文件上的hg revert然后复制.orig来解决这个问题,但为什么会发生这种情况呢?它会在其他情况下发生吗?

1 个答案:

答案 0 :(得分:1)

假设您有一个文件foo.txt并且您

$ hg rename foo.txt bar.txt
$ hg status
A bar.txt
R foo.txt

foo.txt被标记为已移除(R),新文件bar.txt被标记为已添加(A)。你试图恢复。但正如你所说的那样,它失败了:

  

尝试恢复到重命名前修订版(顺便说一下,它没有用)

所以没有任何改变。 foo.txt仍被标记为已删除,bar.txt已标记为已添加。

如果您手动还原文件foo.txt,则无关紧要。

$ mv bar.txt foo.txt
$ hg status
R foo.txt
! bar.txt

只会说您添加了重命名的文件bar.txt丢失了。

Mercurial记录了您的操作并跟踪添加和删除的文件。手动添加和删除文件没有帮助。要解决此问题,您应该指示mercurial重新添加foo.txt并删除bar.txt

$ hg add foo.txt
$ hg status
! bar.txt
$ hg remove bar.txt
$ hg status
$