Git忽略除子文件夹以外的所有内容

时间:2011-08-09 18:36:00

标签: git magento gitignore

我搜索了其他问题但找不到适合我项目的解决方案。 有一个Magento项目,我想排除除此之外的所有内容:

/app/design/frontend/default/theme_name # and obviously all subfolders
/skin/frontend/default/theme_name # and all subfolders

我尝试了很多组合,但没有运气。目前我坚持使用这个.gitignore文件:

*
!/app/
!/app/*

app/*
!/app/design/
!/app/design/*

但它在设计文件夹下面递归不起作用。它只在我创建的设计文件夹中添加了一个测试文件。

3 个答案:

答案 0 :(得分:5)

在这里做了一些研究。对我有用的是:

/*
!/directory
!/another
/another/*
!/another/directory

正确跟踪/directory的子目录。奇怪的是,它不适用于第一行的/* - 我不知道为什么。

答案 1 :(得分:5)

在这里查看我的答案:Can't understand how gitignore ignores the folders

引用:

  

以下讨论很有帮助:   http://git.661346.n2.nabble.com/negated-list-in-gitignore-no-fun-td1675067.html   ,尤其是来自Linus的以下内容:

     

这是设计的。你选择忽略这些目录;他们   匹配“*”自己。因此,'git add。'没有进入他们   寻找文件。

     

所以基本上,对于你必须进入的每个级别,unignore该文件夹,   并忽略该文件夹中的内容。

此外,您应该在子目录而不是根级别查看.gitignore,因为如果您必须从根.gitignore转到子目录级别,它会变得非常复杂,因为上面的解释,对于每个级别,您必须取消对文件夹的取消,然后忽略内容等等。

答案 2 :(得分:0)

/**
!/**/
!/app/design/frontend/default/theme_name/**
!/skin/frontend/default/theme_name/**

阐释:

  1. 以递归方式忽略所有文件和文件夹(请注意双星号)。
  2. 以递归方式排除所有文件夹(git by design不会提交空文件夹,其中一个被忽略文件的文件夹被计为。我们需要这样,以便下两个排除工作)
  3. 从此位置以递归方式排除所有文件和文件夹。
  4. 从此位置以递归方式排除所有文件和文件夹。
  5. 我通常对子文件夹执行此操作,因此我不知道第一行是否有效。