30

我有一个包含多种不同文件的目录树。父目录上有 300 个目录。每个目录可以有其他子目录。

我只想在所有子目录上跟踪 *.cocci。这是我的 .gitignore:

*
!*.cocci

但它不起作用,因为子目录上的文件没有被跟踪。如何告诉 git 我只想在所有子目录上跟踪 *.cocci?

4

4 回答 4

44

阅读这个问题

你要:

# Blacklist everything
*
# Whitelist all directories
!*/
# Whitelist the file you're interested in. 
!*.cocci 

请注意,这将仅 跟踪*.cocci文件。您的不起作用,因为您忽略了所有内容(这是第一行),它忽略了所有子目录

于 2012-10-09T16:11:11.497 回答
5

要扩展@simont 答案,如果我们想 *.cocci将给定目录及其子目录的文件列入白名单,我会错误地输入:

directory/*
!directory/*/
!directory/*.cocci 

这似乎不*.cocci包括directory/subtree.

为了找到所有*.cocci子目录中的所有文件,directory输入以下内容:

directory/**
!directory/*/
!directory/**/*.cocci 
于 2017-05-10T12:32:21.890 回答
2

在 .gitignore中无法取消忽略目录!dir,但仍然可以手动添加目录:

git add dir -f

因此,如果 .gitignore 文件如下所示:

*
!*.txt

然后,当您执行git add .*.txt文件时,就会添加。新目录不会自动添加,必须手动添加git add dir -f

于 2017-02-24T00:00:49.517 回答
0

你试过!*/*.cocci而不是你的!*.cocci吗?

于 2012-10-09T12:31:34.747 回答