一种验证.gitignore文件的方法

时间:2014-11-13 11:44:18

标签: git gitignore

有没有办法验证.gitignore文件,以便您快速找到不再存在的双路径或路径?通常情况下,当一个项目很小时,这并不是必需的,但是有很多分支和.gitignore文件的合并,这可以随便出现。

3 个答案:

答案 0 :(得分:15)

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

选择一个您应该忽略的文件,并检查输出:

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

您会看到适用的.gitignore规则。


2016年3月更新:Git 2.8将添加一种调试.gitignore文件及其规则的新方法。

在允许忽略 not 的子文件夹的情况下(即使忽略其父文件夹:请参阅example here),我发现this gem来自Thái Ngọc Duy (pclouds) {3}}:

  

dir.c:支持跟踪排除

man git包括:

GIT_TRACE_EXCLUDE:
  

启用可帮助调试.gitignore处理的跟踪消息   See 'GIT_TRACE'用于可用的跟踪输出选项。

GIT_TRACE_EXCLUDE设置为1,您会看到(git status之后)stderr debug messages like

exclude: from ...
exclude: xxx => n/a
exclude: xxx vs. yyy at line z: => www

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

为了在路径中也验证git的**模式,我不得不编写一个受上述脚本启发的单行代码:

class perpetualTimer():
    def __init__(self, t, hFunction):
        self.t = t
        self.hFunction = hFunction
        self.thread = Timer(self.t, self.handle_function)

    def handle_function(self):
        self.hFunction()
        self.thread = Timer(self.t, self.handle_function)
        self.thread.start()

    def start(self):
        self.thread.start()

不太漂亮,但是可以。