配置git只跟踪一个文件扩展名

时间:2012-10-09 12:16:42

标签: git file-extension gitignore subdirectory

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

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

*
!*.cocci

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

4 个答案:

答案 0 :(得分:35)

阅读this question

你想:

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

请注意,这只会追踪 *.cocci个文件。您的工作无效,因为您忽略了所有(这是第一行),忽略所有子目录

答案 1 :(得分:2)

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

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

这似乎不包括*.cocci下的directory/subtree个文件。

要查找*.cocci所有子目录中的所有directory个文件,请输入以下内容:

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

答案 2 :(得分:1)

无法在.gitignore中通过!dir取消签名目录,但是仍然可以手动添加目录:

git add dir -f

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

*
!*.txt

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

手动添加

答案 3 :(得分:-1)

您是否尝试过!*/*.cocci而不是!*.cocci