Git: 忽略文件夹中的内容而不是整个文件夹

6
我使用以下.gitignore文件(全局):

我使用以下.gitignore文件(全局):

.idea
.svn
/media/covers/*
/media/tmp/*
/media/cache/*
/bin
/include
/lib
/local
*.log
*.pot
*.pyc
local_settings.py

media/coversmedia/tmpmedia/cache中,我希望忽略所有的文件和文件夹,但不包括这些文件夹本身。这个.gitignore文件忽略了media/coversmedia/tmpmedia/cache这些目录,我该如何解决呢?
谢谢!

1
Git根本不会跟踪目录,只会跟踪目录中的文件。 - twalberg
2个回答

14

在您想保留的目录中添加一个 .gitignore 文件,在该目录中放置以下内容:

*

现在你执行 git status 命令时,会发现显示的内容只有 .gitignore 文件被追踪了,其他文件都没有被追踪。由于 .gitignore 文件在目录中,这意味着该目录将被追踪,但是其他内容不会被追踪。


5

Git不会将空目录添加到其索引中。我猜测这些目录被排除的原因是它们是空的,而不是与忽略规则匹配。

人们解决这个问题的一种方法是在他们想要Git保留的目录中创建一个名为.gitkeep的空文件。因此,您可以将该文件添加到media/coversmedia/tmp等目录中。然后在您的.gitignore文件中添加!*.gitkeep/


我喜欢 .gitkeep 文件的想法。从某种意义上来说,它是自我解释的。谢谢! - Karthic Raghupathi

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