有没有一种方法可以验证.gitignore文件,以便快速查找重复的路径或不再存在的路径?通常,在项目很小的时候,这并不是必需的,但是在有许多分支和合并.gitignore文件的情况下,这可能会派上用场。
不完全正确。
可能比较接近的一个命令是git check-ignore
选择一个你知道应该被忽略的文件,然后检查以下命令的输出:
git check-ignore -v -- /path/to/ignored/file
您将看到适用于您的 .gitignore
文件的规则。
.gitignore
文件及其规则。pclouds
) 的这个宝石:
dir.c
: 支持跟踪 exclude
man git
包括:
GIT_TRACE_EXCLUDE:
启用追踪消息以帮助调试
.gitignore
处理。
参见 'GIT_TRACE
' 获取可用的跟踪输出选项。
将 GIT_TRACE_EXCLUDE
设置为 1 后,在 git status
后会看到类似 stderr 调试消息:
exclude: from ...
exclude: xxx => n/a
exclude: xxx vs. yyy at line z: => www
你可以编写脚本来检查它。我已经为您制作了一个:
#!/bin/bash
set -o noglob
for file in `cat .gitignore | grep -v \#`
do
printf "$file"
find . -name "$file" | wc -l
done
它将显示当前目录和递归目录中遵循的规则数量及其匹配数。例如:
*.log 31
*.gz 0
*~ 42
*.swp 0
*.aux 33
*.pdf 51
*.out 7
*.toc 6
*.nav 1
*.snm 1
.DS_Store 0
0
的行,可以通过将其导入到egrep "\b0\b"
中来实现。find . -type f | git check-ignore -v --stdin | perl -pe 's,.*\.gitignore:,,; s,\t," "x100,e' | sort | uniq -w 100 -c | perl -pe 's, {100}.*,,'
find
的通配符匹配与 git 的.gitignore
通配符匹配相同。这个假设是否安全? - Lombard