git从gitignore规则中排除特定文件夹及其内容

时间:2017-01-06 14:20:59

标签: git

我的项目中有一个.gitignore文件,其中包含以下规则:

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
[Xx]64/
[Xx]86/
[Bb]uild/
bld/
[Bb]in/
[Oo]bj/

我的应用程序中有一个使用关键字“Build”的特定文件夹,但我希望将此特定文件夹及其文件包含在我的提交中。

我想要包含的路径如下:

Views/Build/Index.cshtml
Views/Build/Create.cshtml

我尝试了以下但是它无效:

!Views/[Bb]uild/*

我做错了什么?

我很难找到问题的答案,并希望有人可以提供帮助。

1 个答案:

答案 0 :(得分:1)

!Views/[Bb]uild添加到底部的.gitignore文件中(在其他规则之后)。我用以下文件对此进行了测试:

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
[Xx]64/
[Xx]86/
[Bb]uild/
bld/
[Bb]in/
[Oo]bj/

!Views/[Bb]uild

您和我的尝试之间的区别在于您添加了!Views/[Bb]uild/*并添加了!Views/[Bb]uild

我认为!Views/[Bb]uild/*不起作用的原因是因为它说'排除'Views / Build'下面的所有内容被忽略了“,但这本身没有效果,因为目录本身仍然被忽略。我的规则排除了目录本身(以及扩展名下的所有内容)。

修改

这是我在以下测试过的目录的树结构:

$ tree -a -I .git
.
├── .gitignore
├── hello.cs
├── temp.py
├── temp.txt
├── temp.vi
└── Views
    └── Build
        ├── Create.cshtml
        └── Index.cshtml

这是git status的输出:

$ git status
On branch master

Initial commit

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        .gitignore
        Views/
        hello.cs
        temp.py
        temp.txt
        temp.vi