blob: 8b42cb3fb20a78cde2eb4c6a7546a334cc71ec4b [file] [log] [blame]
Adam Spiers368aa522013-01-06 16:58:13 +00001git-check-ignore(1)
2===================
3
4NAME
5----
6git-check-ignore - Debug gitignore / exclude files
7
8
9SYNOPSIS
10--------
11[verse]
Robert P. J. Dayde613052018-05-24 16:11:39 -040012'git check-ignore' [<options>] <pathname>...
13'git check-ignore' [<options>] --stdin
Adam Spiers368aa522013-01-06 16:58:13 +000014
15DESCRIPTION
16-----------
17
18For each pathname given via the command-line or from a file via
Dennis Kaarsemaker219cbf02015-11-20 21:30:48 +010019`--stdin`, check whether the file is excluded by .gitignore (or other
20input files to the exclude mechanism) and output the path if it is
21excluded.
Adam Spiers368aa522013-01-06 16:58:13 +000022
Michael J Gruber27234a22014-12-04 16:23:05 +010023By default, tracked files are not shown at all since they are not
24subject to exclude rules; but see `--no-index'.
25
Adam Spiers368aa522013-01-06 16:58:13 +000026OPTIONS
27-------
28-q, --quiet::
29 Don't output anything, just set exit status. This is only
30 valid with a single pathname.
31
32-v, --verbose::
33 Also output details about the matching pattern (if any)
Dennis Kaarsemaker219cbf02015-11-20 21:30:48 +010034 for each given pathname. For precedence rules within and
35 between exclude sources, see linkgit:gitignore[5].
Adam Spiers368aa522013-01-06 16:58:13 +000036
37--stdin::
Junio C Hamano33e8fc82015-10-16 11:27:42 -070038 Read pathnames from the standard input, one per line,
39 instead of from the command-line.
Adam Spiers368aa522013-01-06 16:58:13 +000040
41-z::
42 The output format is modified to be machine-parseable (see
43 below). If `--stdin` is also given, input paths are separated
44 with a NUL character instead of a linefeed character.
45
Adam Spiersae3caf42013-04-11 13:05:10 +010046-n, --non-matching::
47 Show given paths which don't match any pattern. This only
48 makes sense when `--verbose` is enabled, otherwise it would
49 not be possible to distinguish between paths which match a
50 pattern and those which don't.
51
Dave Williams8231fa62013-09-05 17:08:01 +010052--no-index::
53 Don't look in the index when undertaking the checks. This can
54 be used to debug why a path became tracked by e.g. `git add .`
55 and was not ignored by the rules as expected by the user or when
56 developing patterns including negation to match a path previously
57 added with `git add -f`.
58
Adam Spiers368aa522013-01-06 16:58:13 +000059OUTPUT
60------
61
62By default, any of the given pathnames which match an ignore pattern
63will be output, one per line. If no pattern matches a given path,
64nothing will be output for that path; this means that path will not be
65ignored.
66
67If `--verbose` is specified, the output is a series of lines of the form:
68
69<source> <COLON> <linenum> <COLON> <pattern> <HT> <pathname>
70
71<pathname> is the path of a file being queried, <pattern> is the
72matching pattern, <source> is the pattern's source file, and <linenum>
73is the line number of the pattern within that source. If the pattern
74contained a `!` prefix or `/` suffix, it will be preserved in the
75output. <source> will be an absolute path when referring to the file
Nguyễn Thái Ngọc Duyda0005b2015-03-11 16:32:45 -040076configured by `core.excludesFile`, or relative to the repository root
Adam Spiers368aa522013-01-06 16:58:13 +000077when referring to `.git/info/exclude` or a per-directory exclude file.
78
79If `-z` is specified, the pathnames in the output are delimited by the
80null character; if `--verbose` is also specified then null characters
81are also used instead of colons and hard tabs:
82
83<source> <NULL> <linenum> <NULL> <pattern> <NULL> <pathname> <NULL>
84
Adam Spiersae3caf42013-04-11 13:05:10 +010085If `-n` or `--non-matching` are specified, non-matching pathnames will
86also be output, in which case all fields in each output record except
87for <pathname> will be empty. This can be useful when running
88non-interactively, so that files can be incrementally streamed to
89STDIN of a long-running check-ignore process, and for each of these
90files, STDOUT will indicate whether that file matched a pattern or
91not. (Without this option, it would be impossible to tell whether the
92absence of output for a given file meant that it didn't match any
93pattern, or that the output hadn't been generated yet.)
Adam Spiers368aa522013-01-06 16:58:13 +000094
Adam Spiersf1ed7fe2013-04-11 13:05:13 +010095Buffering happens as documented under the `GIT_FLUSH` option in
96linkgit:git[1]. The caller is responsible for avoiding deadlocks
97caused by overfilling an input buffer or reading from an empty output
98buffer.
99
Adam Spiers368aa522013-01-06 16:58:13 +0000100EXIT STATUS
101-----------
102
1030::
104 One or more of the provided paths is ignored.
105
1061::
107 None of the provided paths are ignored.
108
109128::
110 A fatal error was encountered.
111
112SEE ALSO
113--------
114linkgit:gitignore[5]
Junio C Hamano1cca17d2016-05-04 10:36:24 -0700115linkgit:git-config[1]
Ramkumar Ramachandra5a87e922013-06-30 17:35:28 +0530116linkgit:git-ls-files[1]
Adam Spiers368aa522013-01-06 16:58:13 +0000117
118GIT
119---
120Part of the linkgit:git[1] suite