Git忽略子文件夹,但不忽略文件夹中的文件。

34

我一直在寻找,但就是找不到和我类似的情况。我有:

--public
      |--img
           |--logo (folder)
           |--post_image (folder)
           |--banner.jpg
           |--icon.ico
           |--image1.jpg
           |-........etc

我需要忽略logopost_image文件夹,但是我想保留img文件夹内的所有文件。我该怎么做?

现在我有**/public/img,但我感觉这不是正确的方法!

3个回答

49

我发现这种方法更简单(至少在有许多子文件夹的情况下是这样):

public/img/*/

这将排除public/img/中的所有子文件夹,但不会排除此文件夹中的文件。


这对我似乎没有起作用。我向每个目录添加了一个隐藏文件,并且只想忽略子目录,但/folder/subfolder/*/仍然忽略了子目录。 - raw-bin hood
@rippledj,我不太明白你的意思。/folder/subfolder/*/ 不会忽略 /folder/subfolder/,而是每个目录内部。你期望隐藏文件有什么变化吗? - Lorenz Meyer
所以,我认为我的错误在于我想保留仓库中的空文件夹(与 OP 的目标不同)。因此,我认为/folder/subfolder/*/会保留文件夹,如果我只是放一个空的隐藏文件在里面。然而,它和忽略所有文件夹内容一样。我需要一个不同的解决方案。(! / folder / .keep)。 - raw-bin hood

8

也可以从根目录进行吗?比如在根目录下有一个.gitignore文件,其中包含“/img/logo”和“/img/post-Image”?如果我从根目录或子目录直接进行,是否有区别? - Cristian
2
实际上,我想忽略所有子文件夹,但不包括文件。在 OPs 中,这意味着我不想特别指定 logopost_image,因为如果我添加另一个文件夹并忘记它,它将不会被忽略。有没有一种方法可以指定忽略特定文件夹中的所有子文件夹,但不包括文件?换句话说,dist/foo.txt 是,dist/someFolder 不是。 - gman

2
请尝试以下选项。
public/img/*

!public/img/logo/

!public/img/post_image/

git-ignore

{{链接1:git-ignore}}


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