Mercurial:“工作目录中未跟踪的文件与请求修订中的文件不同”?
谁能告诉我这个 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)存储库中也是相同的。
我不清楚这意味着什么。 ??
Can anyone tell me what this Mercurial error means?
untracked file in working directory
differs from file in requested
revision
This occurred when doing an 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'
From what I can tell this file (a/b/c/d.java) does not match any paths configured in .hgignore. And this specific file is also identical in the two (myapp & myapp-v1) repositories..
I am not clear what this even means. ??
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
它告诉您在 myapp 存储库的本地工作目录中已经有一个名为
a/b/c/d.java
的文件,但尚未添加(跟踪),并且 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
。它为您组合了pull
、update
和merge
,但这并不是一种安全的方式。在这种情况下,您的pull
将会成功,并且update
和merge
都会给您提供更多有用的消息。It's telling you you already have a file named
a/b/c/d.java
in your local working directory of the myapp repo, but it hasn't been added (tracked), and fetch isn't willing to overwrite it when updating/merging.Things you can do are ether:
a/b/c/d.java
out of the way and then do the pull/update. After that compare your moveda/b/c/d.java
to the one fetch brings down.or
hg add a/b/c/d.java
,hg commit a/b/c/d.java
, and then pull / mergeThe former works because there's no longer a file in the way, and the later works because your copy is tracked so Mercurial can merge them.
Also, you should consider stopping using
fetch
. It combinespull
andupdate
andmerge
for you, which is just not a safe way to be. In this case yourpull
would have succeeded and bothupdate
andmerge
would have given you much more helpful messages.我通过运行
hg update --clean
解决了这个问题I got around this by running
hg update --clean
只需接受错误对话框,然后勾选
放弃本地更改,不备份
你应该很好,它会覆盖任何未跟踪的本地文件...
Just accept the error dialog then tick
Discard local changes, no backup
And you should be good, it will overwrite any untracked local files...
我尝试了 Ry4an 的答案(删除文件),但它仍然不起作用,所以我运行了一次清除,清除了所有痕迹,以便之后可以正常工作。以防万一有人正在寻找替代解决方案。
I tried Ry4an's answer (of deleting the file) and it still did not work, so I ran a purge and that got rid of all traces such that it worked after. Just in case somebody is looking for an alternative solution.
如果使用 TortoiseHG,您可以在更新窗口中选中“放弃本地更改,不备份”选项。
If using TortoiseHG you can check the "Discard local changes, no backup" option in the Update window.