]> git.ipfire.org Git - thirdparty/git.git/blob - Documentation/git-check-ignore.txt
make the sender advertise shallow commits to the receiver
[thirdparty/git.git] / Documentation / git-check-ignore.txt
1 git-check-ignore(1)
2 ===================
3
4 NAME
5 ----
6 git-check-ignore - Debug gitignore / exclude files
7
8
9 SYNOPSIS
10 --------
11 [verse]
12 'git check-ignore' [options] pathname...
13 'git check-ignore' [options] --stdin < <list-of-paths>
14
15 DESCRIPTION
16 -----------
17
18 For each pathname given via the command-line or from a file via
19 `--stdin`, show the pattern from .gitignore (or other input files to
20 the exclude mechanism) that decides if the pathname is excluded or
21 included. Later patterns within a file take precedence over earlier
22 ones.
23
24 OPTIONS
25 -------
26 -q, --quiet::
27 Don't output anything, just set exit status. This is only
28 valid with a single pathname.
29
30 -v, --verbose::
31 Also output details about the matching pattern (if any)
32 for each given pathname.
33
34 --stdin::
35 Read file names from stdin instead of from the command-line.
36
37 -z::
38 The output format is modified to be machine-parseable (see
39 below). If `--stdin` is also given, input paths are separated
40 with a NUL character instead of a linefeed character.
41
42 -n, --non-matching::
43 Show given paths which don't match any pattern. This only
44 makes sense when `--verbose` is enabled, otherwise it would
45 not be possible to distinguish between paths which match a
46 pattern and those which don't.
47
48 --no-index::
49 Don't look in the index when undertaking the checks. This can
50 be used to debug why a path became tracked by e.g. `git add .`
51 and was not ignored by the rules as expected by the user or when
52 developing patterns including negation to match a path previously
53 added with `git add -f`.
54
55 OUTPUT
56 ------
57
58 By default, any of the given pathnames which match an ignore pattern
59 will be output, one per line. If no pattern matches a given path,
60 nothing will be output for that path; this means that path will not be
61 ignored.
62
63 If `--verbose` is specified, the output is a series of lines of the form:
64
65 <source> <COLON> <linenum> <COLON> <pattern> <HT> <pathname>
66
67 <pathname> is the path of a file being queried, <pattern> is the
68 matching pattern, <source> is the pattern's source file, and <linenum>
69 is the line number of the pattern within that source. If the pattern
70 contained a `!` prefix or `/` suffix, it will be preserved in the
71 output. <source> will be an absolute path when referring to the file
72 configured by `core.excludesfile`, or relative to the repository root
73 when referring to `.git/info/exclude` or a per-directory exclude file.
74
75 If `-z` is specified, the pathnames in the output are delimited by the
76 null character; if `--verbose` is also specified then null characters
77 are also used instead of colons and hard tabs:
78
79 <source> <NULL> <linenum> <NULL> <pattern> <NULL> <pathname> <NULL>
80
81 If `-n` or `--non-matching` are specified, non-matching pathnames will
82 also be output, in which case all fields in each output record except
83 for <pathname> will be empty. This can be useful when running
84 non-interactively, so that files can be incrementally streamed to
85 STDIN of a long-running check-ignore process, and for each of these
86 files, STDOUT will indicate whether that file matched a pattern or
87 not. (Without this option, it would be impossible to tell whether the
88 absence of output for a given file meant that it didn't match any
89 pattern, or that the output hadn't been generated yet.)
90
91 Buffering happens as documented under the `GIT_FLUSH` option in
92 linkgit:git[1]. The caller is responsible for avoiding deadlocks
93 caused by overfilling an input buffer or reading from an empty output
94 buffer.
95
96 EXIT STATUS
97 -----------
98
99 0::
100 One or more of the provided paths is ignored.
101
102 1::
103 None of the provided paths are ignored.
104
105 128::
106 A fatal error was encountered.
107
108 SEE ALSO
109 --------
110 linkgit:gitignore[5]
111 linkgit:gitconfig[5]
112 linkgit:git-ls-files[1]
113
114 GIT
115 ---
116 Part of the linkgit:git[1] suite