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

问题描述 投票:7回答:3

我搜索了其他问题,但无法为我的项目找到有效的解决方案。有一个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/*

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

git magento gitignore
3个回答
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。'没有下降到他们寻找文件。

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

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


5
投票

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

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

随着/directory的这个子目录被正确跟踪。奇怪的是,它不适用于第一行只有/或只有* - 我不知道为什么。


0
投票
/**
!/**/
!/app/design/frontend/default/theme_name/**
!/skin/frontend/default/theme_name/**

阐释:

  1. 以递归方式忽略所有文件和文件夹(注意双星号)。
  2. 以递归方式排除所有文件夹(git by design不会提交空文件夹,其中一个被忽略文件的文件夹被计为。我们需要这样,以便下两个排除工作)
  3. 从此位置以递归方式排除所有文件和文件夹。
  4. 从此位置以递归方式排除所有文件和文件夹。

我通常这样做到子文件夹,所以我不知道第一行是否有效。

© www.soinside.com 2019 - 2024. All rights reserved.