我正在尝试提取一些文件和目录,并且我收到以下消息:
当我查看我的存储库时,我可以看到文件已经下载但所有文件都包含_
作为前缀,甚至文件和文件夹的名称都包含_
requesting all changes
adding changesets
adding manifests
adding file changes
added 1094 changesets with 4304 changes to 1071 files abort:
untracked file in working directory differs from file in requested revision: '.hgignore' [command interrupted]
有什么问题?
答案 0 :(得分:9)
我认为您已在工作目录中创建了.hgignore
,但未将其添加到存储库(hg add
)。此文件“未跟踪”。
来自另一个克隆的其他人也添加了此文件,已提交并推送它。现在,当您尝试更新工作目录时,Mercurial会尝试添加此文件,但会在工作目录中看到一个同名的文件,该文件未跟踪且不同。
您的问题有两个解决方案:
hg add
将您自己的文件添加到存储库,然后重新运行更新。可能需要在更新之前提交文件。我建议使用第一种解决方案。
答案 1 :(得分:0)
如果您说存储库中的文件有_
作为前缀,那么您在.hg
目录中向下看不是吗?这是Mercurial本身的数据存储,其中的文件是revlogs,而不是你的文件。在.hg
之外,您将拥有一个工作目录,其中的文件是您期望的实际文件。您现在没有收到其中一个,因为hg update
拒绝更新工作目录,因为这样做会覆盖您未经注册的.hgignore
文件。
您运行的是什么完全命令?看起来它正在执行hg pull
后跟hg update
所以我猜hg clone
但是如果你已经有一个.hgignore
,那就不是正确的命令。如果您使用的是hg pull -u
或hg fetch
,则应该使用hg pull
来获取更改集。然后你可以:
hg add .hgignore # add the hg ignore file you already have that's untracked
hg commit -m .hgignore # commit the .hgignore file you just added
hg merge # merge your new commit (.hgignore) with the changesets you just pulled down.