Mercurial:“工作目录中的未跟踪文件与请求的修订中的文件不同”?


78

谁能告诉我这个Mercurial错误是什么意思?

工作目录中未跟踪的文件与请求版本中的文件不同

这是在进行hg提取时发生的:

C:\myapp>hg fetch ssh://hg/myapp-v1
pulling from ssh://hg/myapp-v1
searching for changes
adding changesets
adding manifests
adding file changes
added 93 changesets with 693 changes to 78 files (+1 heads)
updating to 797:0df7dbe7dc06
196 files updated, 0 files merged, 196 files removed, 0 files unresolved
merging with 704:edb7765768c6
abort: untracked file in working directory differs from file in requested revision: 'a/b/c/d.java'

据我所知,该文件(a / b / c / d.java)与.hgignore中配置的任何路径都不匹配。在两个(myapp和myapp-v1)存储库中,此特定文件也相同。

我不清楚这甚至意味着什么。??

Answers:


83

它告诉您a/b/c/d.java在myapp存储库的本地工作目录中已经有一个名为的文件,但尚未添加(跟踪)该文件,并且fetch在更新/合并时不愿覆盖该文件。

您可以做的事情是以太币:

  • 将您的副本a/b/c/d.java移开,然后进行拉取/更新。在那之后,将您移至a/b/c/d.java一次取回进行比较。

要么

  • hg add a/b/c/d.java,,hg commit a/b/c/d.java然后拉/合并

前一个有效是因为不再有文件,而后一个有效是因为已跟踪您的副本,因此Mercurial可以合并它们。

另外,您应该考虑停止使用fetch。它pullupdateand结合在一起,merge对您而言,这并不是一个安全的方法。在这种情况下,您pull将会成功,并且两者都成功,update并且merge会给您更多有用的信息。


在进行合并之前,hg status不会返回任何未更改。 hg add a/b/c/d.java返回“已经跟踪到a / b / c / d.java”
Marcus Leon

关于访存与拉取/合并的有趣观点。我做了一个pull,然后merge在其中以以下形式收到很多消息:remote changed dir/blah.xml which local deleted use (c)hanged version or leave (d)eleted?
Marcus Leon

是的,合并是编码,不应该被忽略。在第一部分中,我们可能会用您的hg stat输出来弄清楚,但是可能是您当前的工作目录不是repo根吗?不过,只是一个猜测。
Ry4an Brase 2011年



8

我尝试了Ry4an的答案(删除文件),但仍然无法正常工作,因此我进行了一次清除操作,清除了所有痕迹,使之工作了。以防万一有人在寻找替代解决方案。


hg purge似乎对我没有用,它没有清除任何东西,但我仍然收到相同的消息
Naguib Ihab 2015年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.