忽略.gitignore中除一个目录之外的所有内容

时间:2016-02-11 01:46:26

标签: git github github-for-windows github-desktop

我有以下目录结构:

/app
/src
    /MyProject
        /FirstProject
            /Controller
                /file-1-1.php
                /file-1-2.php
                /file-1-3.php
            /Resources
                /view-1.html.twig
                /view-2.html.twig
        /SecondProject
            /Controller
                /file-2-1.php
                /file-2-2.php
                /file-2-3.php
            /Resources
                /view-3.html.twig
                /view-4.html.twig
/vendor
/web

除了/src/MyProject/SecondProject/Resources中的文件外,我想忽略我的存储库中的所有文件。 我尝试了很多方法但没有成功。 GitHub应用程序不检测我想要的目录。通常这个应用程序不检测任何文件或检测到所有文件,所以我很困惑。

我试过了:

# IGNORE:
app/
src/
vendor/
web/

# ALLOW:
  # my first attempt:
!src/MyProject/SecondProject/Resources/*
  # second attempt:
!src/MyProject/SecondProject/Resources/**/
  # third attempt:
!src/MyProject/SecondProject/Resources/**/*

我还没有在其他问题中找到解决方案!

1 个答案:

答案 0 :(得分:2)

.gitignore实际上有效:

/app
/vendor
/web
/src/**/**
!src/**/
!/src/MyProject/SecondProject/Resources/**

mipadi' s answer是指在git 2.7.0中引入的机制,在2.7.1中反转...

唯一的规则是:

It is not possible to re-include a file if a parent directory of that file is excluded.

因此,在白名单src内容之前需要列出白名单Resources子文件夹。

我测试了以上内容:

> git --version
git version 2.7.1.windows.1