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)不匹配在.hgignoreconfiguration的任何path。 而这个特定的文件在两个(myapp&myapp-v1)存储库中也是相同的。

我不清楚这是甚么意思。 ??

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

你可以做的事情是乙醚:

  • 移动你的a/b/c/d.java的副本,然后执行pull / update。 之后,比较你的移动a/b/c/d.java到一个取回带来的。

要么

  • hg add a/b/c/d.javahg commit a/b/c/d.java ,然后pull / merge

前者的工作原理是因为不再有文件,后面的工作是因为你的副本被跟踪,所以Mercurial可以合并它们。

另外,您应该考虑停止使用fetch 。 它结合了pullupdatemerge ,这不是一个安全的方式。 在这种情况下,你的pull成功, updatemerge会给你更多有用的信息。

我通过运行hg update --clean解决这个问题

我试着Ry4an的回答(删除文件),但它仍然没有工作,所以我跑了一个清除,并摆脱了所有的痕迹,使之后的工作。 以防万一有人正在寻找替代解决scheme。

只要接受错误对话框,然后selectDiscard local changes, no backup

在这里输入图像说明

你应该很好,它会覆盖任何untracked本地文件…

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