我有一个包含多种不同文件的目录树。父目录上有 300 个目录。每个目录可以有其他子目录。
我只想在所有子目录上跟踪 *.cocci。这是我的 .gitignore:
*
!*.cocci
但它不起作用,因为子目录上的文件没有被跟踪。如何告诉 git 我只想在所有子目录上跟踪 *.cocci?
我有一个包含多种不同文件的目录树。父目录上有 300 个目录。每个目录可以有其他子目录。
我只想在所有子目录上跟踪 *.cocci。这是我的 .gitignore:
*
!*.cocci
但它不起作用,因为子目录上的文件没有被跟踪。如何告诉 git 我只想在所有子目录上跟踪 *.cocci?
阅读这个问题。
你要:
# Blacklist everything
*
# Whitelist all directories
!*/
# Whitelist the file you're interested in.
!*.cocci
请注意,这将仅 跟踪*.cocci
文件。您的不起作用,因为您忽略了所有内容(这是第一行),它忽略了所有子目录。
要扩展@simont 答案,如果我们想 *.cocci
将给定目录及其子目录的文件列入白名单,我会错误地输入:
directory/*
!directory/*/
!directory/*.cocci
这似乎不*.cocci
包括directory/subtree
.
为了找到所有*.cocci
子目录中的所有文件,directory
输入以下内容:
directory/**
!directory/*/
!directory/**/*.cocci
在 .gitignore中无法取消忽略目录!dir
,但仍然可以手动添加目录:
git add dir -f
因此,如果 .gitignore 文件如下所示:
*
!*.txt
然后,当您执行git add .
新*.txt
文件时,就会添加。新目录不会自动添加,必须手动添加git add dir -f
你试过!*/*.cocci
而不是你的!*.cocci
吗?