Mercurial hg ignore无法正常工作

use*_*882 4 mercurial hgignore

情况

$ cat .hgignore
.hgignore

$ hg status
M file1
M file2
M src/project.xml
Run Code Online (Sandbox Code Playgroud)

我不想跟踪,project.xml所以我跑

echo "project.xml" >> .hgignore
Run Code Online (Sandbox Code Playgroud)

结果是

$ cat .hgignore
.hgignore
project.xml

$ hg status
M .hgignore
M file1
M file2
M src/project.xml
Run Code Online (Sandbox Code Playgroud)

所以.hgignore即使它不应该被跟踪而且没有任何事情发生,现在它已被修改project.xml.这是什么意思?

Chr*_*ler 15

你写了:

" M src/project.xml"

这意味着它src/project.xml受版本控制.已经受版本控制的文件不能被忽略!该 .hgignore文件用于忽略未跟踪的文件(状态将显示" ").

您有两种解决方案可以忽略您的文件:

  1. 您可以" hg forget"文件,与" hg add" 相反(即告诉Mercurial不再跟踪此文件),或者
  2. 您可以 在配置文件中使用" -X"选项作为默认选项,例如,status/diff/commit.hg/hgrc

    [defaults]
    status = -X <file>
    diff = -X <file>
    commit = -X<file>

这会告诉hg不要在使用status,diff和commit时包含这个文件.

  • 我认为`hg forget`肯定是更好的选择.VCS不应该只是默默地忽略版本控制下的修改过的文件,这会在你忘记这一点时导致将来遇到麻烦,并希望hg只是跟踪文件的变化而不考虑它. (3认同)