Version control 添加新文件后,如何在mercurial中更新到最新版本?

Version control 添加新文件后,如何在mercurial中更新到最新版本?,version-control,mercurial,dvcs,Version Control,Mercurial,Dvcs,我已经在项目目录中创建了一个存储库。我已经添加了所有文件并提交了一些文件。然后,我将新文件添加到项目和存储库中。之后,我返回到早期版本,现在我无法更新到最后一个版本。在hg更新提示之后我收到以下消息: abort: untracked file in working directory differs from file in requested revision: '.DS_Store' 我是mercurial的新手。如何解决这个问题?这意味着Mercurial不确定该怎么办。您的工作副本中

我已经在项目目录中创建了一个存储库。我已经添加了所有文件并提交了一些文件。然后,我将新文件添加到项目和存储库中。之后,我返回到早期版本,现在我无法更新到最后一个版本。在
hg更新提示之后
我收到以下消息:

abort: untracked file in working directory differs from file in requested
revision: '.DS_Store'

我是mercurial的新手。如何解决这个问题?

这意味着Mercurial不确定该怎么办。您的工作副本中有一个内容为
某物的文件。该文件不受版本控制,因此Mercurial通常会在更新时将其保留。但是,您要更新到的修订版也有一个同名文件,并且内容与文件中已有的内容不同

如果你这样做,你会遇到这个问题

$ hg init
$ echo "a file" > a
$ hg add a
$ hg commit -m "added a"
$ echo "b file" > b
$ hg add b
$ hg commit -m "added b"
您现在有两个修订版本,最新版本有文件
a
b
。如果您更新回第一个版本并创建不同的文件
b
,则会遇到以下问题:

$ hg update 0
$ echo "other b file" > b
$ hg update
abort: untracked file in working directory differs from file in requested
revision: 'b'
通常的解决方案是在更新之前提交。您通常不应使用脏工作副本进行更新(“脏”表示
hg status
不为空)。Mercurial确实支持这样的更新,但只有当您知道自己在做什么时才应该使用它们

因此,要继续上面的示例,我们可以提交新的
b
,然后合并:

$ hg add b
$ hg commit -m "added new b"
$ hg merge
这在
b
中产生了冲突,因为这两个版本分别包含
b文件
其他b文件
。解决冲突并承诺:

$ hg commit -m "merged two bs"
另一种方法是从工作副本中删除该文件对于您的情况,我将这样做:
.DS\u Store
首先不应跟踪文件。它们在Mac OS X上存储一些文件夹信息,这不是源代码的一部分。你也是

$ rm .DS_Store
$ hg update
更新重新启动了
.DS\u存储
文件。您现在要告诉Mercurial它应该停止跟踪该文件:

$ hg forget .DS_Store
您还想告诉Mercurial从现在起忽略这些文件:

$ echo "syntax: glob" >> .hgignore
$ echo ".DS_Store" >> .hgignore
$ hg commit -m "removed .DS_Store file, ignored from now on"