无法理解gitignore如何忽略这些文件夹

时间:2011-04-21 00:34:02

标签: git gitignore

我想为我的Magento项目创建存储库。根目录中有很多文件夹和文件,我只更改一个文件夹的时间:app / code / local /

我想忽略的其他一切。但是......不能。我的.gitignore文件:

*
!app/code/local/
!app/code/local/*

然后,当我尝试将文件夹添加到repo时,我收到错误:

git add app/code/local/Mds/

The following paths are ignored by one of your .gitignore files:
app
Use -f if you really want to add them.
fatal: no files added

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:17)

根据您的需要尝试以下内容:

/*
!/app/
/app/*
!/app/code/
/app/code/*
!/app/code/local/

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

That's by design. You've chosen to ignore those directories; they match "*" themselves. Thus, 'git add .' doesn't descend into them looking for files.

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

答案 1 :(得分:0)

这个.gitignore是在repo的根目录吗?

试试这个:

/*
!/app/code/local

答案 2 :(得分:0)

根据the documentation

  

“如果排除该文件的父目录,则无法重新包含文件。”

例如,如果您已经使用存储库并告诉Git忽略父目录,进行了一些提交,然后返回并尝试允许排除目录的某个子目录,则不会包含子目录即使您的.gitignore文件正确。要解决这个问题,您需要强制添加它(使用-f标志):

git add -f {file}

完成此操作后,将跟踪后续更改。