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

12

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

我想忽略其他所有内容,但是却做不到。我的.gitignore文件:

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

然后当我尝试将文件夹添加到仓库时,出现了错误:

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个回答

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的以下话: 这是有意设计的。您选择忽略了这些目录;它们本身与“*”匹配。因此,“git add .”不会进入其中寻找文件。 因此,基本上对于您要进入的每个级别,都需要取消忽略该文件夹,并忽略该文件夹中的内容。

我简直不敢相信它不起作用。我甚至在app/code/local下创建了新文件夹,但错误仍然存在... - user718085
你一定做了些不同的事情。在我编辑后,我意识到我的答案现在与@Nick的答案相同,所以我们两个都不可能错 :)。而且我已经在一个虚拟仓库中测试过了! - manojlds
小伙伴,它正常工作了=)) 非常感谢你。你是怎么做到的呢? - user718085
就像我编辑后的回复一样,Linus在我给出的链接中的回复帮助我弄清了Git是如何处理它的。 - manojlds

0

这个 .gitignore 文件是在仓库的根目录下吗?

试试这个:

/*
!/app/code/local

抱歉,它没有帮助到您 =( .gitignore在根目录中。 - user718085

0
根据文档

“如果父目录被排除,那么无法重新包含文件。”

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

一旦完成此操作,随后的更改将被跟踪。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接