验证 .gitignore 文件的方法

问题描述 投票:0回答:3

有没有办法验证 .gitignore 文件,以便快速找到双打路径或不再存在的路径?通常,当项目很小时,这并不是真正必要的,但如果有大量分支和 .gitignore 文件合并,这可以派上用场。

git gitignore
3个回答
26
投票

不完全是。
一个可能接近的命令是 git check-ignore

选择一个您知道应该被忽略的文件,并检查以下输出:

git check-ignore -v -- /path/to/ignored/file

您将看到适用的

.gitignore
规则。


2016 年 3 月更新:Git 2.8 将添加一种新方法来调试

.gitignore
文件及其规则。

在允许子文件夹被忽略的情况下(即使其父文件夹被忽略:参见示例),我发现了这个宝石Thái Ngọc Duy(

pclouds
:

dir.c
:支持追踪排除

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

但是 commit 5e57f9c (合并分支 'nd/exclusion-regression-fix',2016-02-24,Git v2.8.0-rc0 -- mergebatch #8 中列出)已恢复,撤销所做的更改到 e79112d (合并分支 'ce/https-public-key-pinning',2016-02-24,Git v2.8.0-rc0 -- merge 列于 batch #8)。

我们将把 nd/exclusion-regression-fix 主题推迟到稍后的周期。

(由 Junio C Hamano --

gitster
-- 合并于 commit 5cee349,2016 年 3 月 18 日)

5cee349370
:恢复“合并分支‘nd/exclusion-regression-fix’”


2
投票

您可以编写一个脚本来检查它。我在那里为你做了一个:

#!/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"
的行。


1
投票

为了验证路径中 git 的 ** 模式,我必须受上面脚本的启发编写一行代码:

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}.*,,'

不太漂亮,但很有效。

© www.soinside.com 2019 - 2024. All rights reserved.