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

时间:2011-01-27 21:33:47

标签: mercurial merge

有人能告诉我这个Mercurial错误的含义吗?

  

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

执行hg fetch时发生这种情况:

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)存储库中也是相同的。

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

5 个答案:

答案 0 :(得分:78)

它告诉你在myapp repo的本地工作目录中已经有一个名为a/b/c/d.java的文件,但是它没有被添加(跟踪),并且fetch在更新/时不愿意覆盖它合并。

你可以做的事情是以太:

  • a/b/c/d.java的副本移开,然后执行拉/更新。之后,将您移动的a/b/c/d.java与一次提取相比较。

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

前者的作用是因为不再存在文件,而后者的作用是因为您的副本被跟踪,因此Mercurial可以合并它们。

此外,您应该考虑停止使用fetch。它结合了pullupdate以及merge,这不是一种安全的方式。在这种情况下,您的pull会成功,而updatemerge会为您提供更多有用的消息。

答案 1 :(得分:23)

我通过运行hg update --clean

解决了这个问题

答案 2 :(得分:8)

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

答案 3 :(得分:8)

只需接受错误对话框,然后勾选Discard local changes, no backup

enter image description here

你应该做得好,它会覆盖任何未跟踪的本地文件......

答案 4 :(得分:3)

如果使用TortoiseHG,您可以在“更新”窗口中选中“放弃本地更改,不备份”选项。