如何使用gitignore模式使Git忽略一个子目录组?

14

我在根目录下有一个projects/目录。根目录被添加到git。在项目中,我有几个子目录。但是我只想跟踪projects/admin而不是projects/xprojects/y。我需要在.gitignore中编写什么忽略规则?

4个回答

26

你可以使用负的忽略子句,例如:

project/*
!project/admin
!project/admin/*

1
如果我只添加 !project/admin/*,那么我需要 !project/admin 吗?我应该把 .gitignore 放在 projects/../ 目录中吗?例如,在 projects 的父目录中? - Neel Basu
1
是的,你需要指定目录和其中包含的内容,我找不到绕过这个问题的方法。我写的示例将超出“projects”目录,但是你总是可以添加一个目录,以避免重复三次输入“projects”。 - Nicolas Buduroi
另外一件事,就我个人而言,我更喜欢每个项目只保留一个.gitignore文件,这样我就能确定去哪里了。 - Nicolas Buduroi

6
projects/*
!projects/admin

!前缀表示否定,即该行中指定的目录或文件不会被忽略。


我应该把.gitignore放在projects/../目录中吗?例如,在projects的父目录中? - Neel Basu
我通常在项目的根目录下使用一个“.gitignore”文件,所以是的。 - Tamás

1

您可以直接将 .gitignore 文件放置在 projects 目录中,它只会影响该目录。

因此,在 projects/.gitignore 中,只需放置以下内容:

admin
x
etc

我需要在添加新项目时更新.gitignore - Neel Basu
@NeelBasu:这是真的。我更喜欢明确地从源代码控制中排除事物,而不是隐式地排除。 - Robert S Ciaccio

-2

如果您不想跟踪每个文件夹,可以通过运行touch project/x/.gitignore为每个文件夹添加.gitignore。Git将忽略这些文件夹的内容。


3
我认为一个空的 .gitignore 文件不会导致目录中的所有内容被忽略。 - Robert S Ciaccio
1
在文件夹中使用空白的 .gitignore 实际上具有相反的效果,因为 git 不会跟踪(空)文件夹,并且使用空白的 .gitignore 是一种简单的方法来添加一个文件以开始跟踪该文件夹。 - manojlds

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