我已为纯文本文件创建了一个白名单。
*
!*.txt
现在,我有一个未被跟踪的文本文件在子目录中 - sub/dir/file.txt
,但它没有显示出来(被忽略了)。而根目录中的文本文件是可以显示的。
为什么会这样,我应该怎么解决?
我已为纯文本文件创建了一个白名单。
*
!*.txt
现在,我有一个未被跟踪的文本文件在子目录中 - sub/dir/file.txt
,但它没有显示出来(被忽略了)。而根目录中的文本文件是可以显示的。
为什么会这样,我应该怎么解决?
# First, ignore everything
*
# Now, whitelist anything that's a directory
!*/
# And all the file types you're interested in.
!*.one
!*.two
!*.etc
在存在于代码库根目录下的一个 .gitignore
文件中,我使用三级结构的白名单针对后缀为 .txt
的文件进行了测试,此时有 *.one
、*.two
和 *.three
文件 - 对我而言有效。您不必将 .gitignore
文件添加到您结构中的所有目录中。
我用来找到答案的信息包括来自这里(stackoverflow.com)等等。
*
时,您也需要输入 !.gitignore
吗? - sjas/*
可以将顶层文件夹列入黑名单,但不递归所有文件夹。这意味着 .gitignore
不应查看白名单文件夹的子文件夹。 - Ryan Taylor.gitignore
文件的第二行使用 *
忽略一切时,然后使用符号 !./directory/
和 !./file
取消对文件和目录的忽略,并尝试将这些文件和目录添加到 git
中时,git status
仅显示文件已被暂存,但没有关于目录的信息。此外,由于某种原因,git branch
命令没有输出任何内容。但是,当我将第一个忽略模式更改为 /*
时,所有操作就如预期一样:git add
命令成功地添加了文件和目录,而 git branch
命令则输出了 master
。 - Teemu Leisti# Ignore all files...
*.*
# ...except the ones we want
!*.txt
gitignore
会将不以/
开头的模式应用到.gitignore
文件下的每个级别:
如果您想对目录内的文件执行此操作,则会变得更加复杂:如果模式的开头或中间(或两者都有)有分隔符,则该模式相对于特定的.gitignore文件所在的目录级别。否则,该模式也可以匹配在.gitignore级别以下的任何级别。
# Ignore all files in all directories inside subdir...
/subdir/**/*.*
# ...except the ones we want
!/subdir/**/*.txt
gitignore
对 **
有特殊规则:
**
"),可能具有特殊含义:a/**/b
" 匹配 "a/b
", "a/x/b
", "a/x/y/b
" 等。*.*
的注释是错误的。它应该是“忽略所有带有句点的文件/文件夹。”Glob模式不会考虑文件;只有通过在末尾添加斜杠才能使其适用于文件夹。 - MonkeyZeus.txt
的文件(在我的情况下:类型为*.md
)。除了这些*.md
文件外,还有大约500GB的(一百万+)不想跟踪的文件。.txt
(或*.md
)文件。.txt
文件之外的所有内容,那么.gitignore
应该如下所示:# Ignore everything
*
# Whitelist every directories, so we can recurse into them
!*/
# Whitelist .gitignore and .txt
!.gitignore
!*.txt
但是,如果您想要忽略存储库中的一个文件夹并在任何目录或子目录中列出.txt
文件:
# Recursively ignore every files in my_folder
/my_folder/**
# Recursively whitelist every directories in my_folder
!/my_folder/**/
# Whitelist .txt
!*.txt