Mercurial:如何从被忽略的文件夹中添加文件?

Mercurial: How to add a file from an ignored folder?

我在文件 .hgignore 中添加了一个文件夹,因此其中的文件(及其子目录中的文件)将被忽略。但是,我只是将一个文件添加到忽略文件夹的子目录之一。如何将该文件添加到跟踪文件列表?

我想这是使用 GUI 进行版本控制的缺点之一。我正在使用 SourceTree 并且很少直接接触到 Hg 命令(尽管我已经启用了在执行命令时显示命令的选项并观察 Hg 在后台执行的操作) .我尝试用谷歌搜索这个问题,但找不到任何相关结果。

您需要编辑存储库的“.hgignore”文件并指定您希望忽略除此文件以外的目录树。例如,如果您具有以下结构:

└── a
    ├── b.txt
    └── c.txt

并且您想忽略除 而不是 c.txt” 之外的所有内容,然后根据 .hgignore 文件内容,您可以拥有:

没有任何 .hgignore 文件:

$ hg status
? a/b.txt
? a/c.txt

用一行忽略“a”下的所有内容:

$ cat .hgignore 
syntax: regexp
^a/
$ hg status
? .hgignore

并用另一行忽略“a”下的所有内容,但不是c.txt”文件:

$ cat .hgignore 
syntax: regexp
^a/(?!c.txt).*
$ hg status
? .hgignore
? a/c.txt

希望对您有所帮助。

您可以通过显式添加来单独跟踪被忽略的文件。来自 .hgignore 手册页:

An untracked file X can be explicitly added with hg add X, even if X would be excluded by a pattern in .hgignore.

您添加此文件的明确意图被假定为覆盖您在 .hgignore 中的首选项。

.hgignore 的主要目的是在添加整个目录时不包含忽略的文件。