Merge branch 'jk/die-on-bogus-worktree-late' into maint
[git/mjg.git] / Documentation / git-check-ignore.txt
blobe35cd0489b6961a5322ea49eeb769bbfb883070e
1 git-check-ignore(1)
2 ===================
4 NAME
5 ----
6 git-check-ignore - Debug gitignore / exclude files
9 SYNOPSIS
10 --------
11 [verse]
12 'git check-ignore' [options] pathname...
13 'git check-ignore' [options] --stdin < <list-of-paths>
15 DESCRIPTION
16 -----------
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.
24 By default, tracked files are not shown at all since they are not
25 subject to exclude rules; but see `--no-index'.
27 OPTIONS
28 -------
29 -q, --quiet::
30         Don't output anything, just set exit status.  This is only
31         valid with a single pathname.
33 -v, --verbose::
34         Also output details about the matching pattern (if any)
35         for each given pathname.
37 --stdin::
38         Read file names from stdin instead of from the command-line.
40 -z::
41         The output format is modified to be machine-parseable (see
42         below).  If `--stdin` is also given, input paths are separated
43         with a NUL character instead of a linefeed character.
45 -n, --non-matching::
46         Show given paths which don't match any pattern.  This only
47         makes sense when `--verbose` is enabled, otherwise it would
48         not be possible to distinguish between paths which match a
49         pattern and those which don't.
51 --no-index::
52         Don't look in the index when undertaking the checks. This can
53         be used to debug why a path became tracked by e.g. `git add .`
54         and was not ignored by the rules as expected by the user or when
55         developing patterns including negation to match a path previously
56         added with `git add -f`.
58 OUTPUT
59 ------
61 By default, any of the given pathnames which match an ignore pattern
62 will be output, one per line.  If no pattern matches a given path,
63 nothing will be output for that path; this means that path will not be
64 ignored.
66 If `--verbose` is specified, the output is a series of lines of the form:
68 <source> <COLON> <linenum> <COLON> <pattern> <HT> <pathname>
70 <pathname> is the path of a file being queried, <pattern> is the
71 matching pattern, <source> is the pattern's source file, and <linenum>
72 is the line number of the pattern within that source.  If the pattern
73 contained a `!` prefix or `/` suffix, it will be preserved in the
74 output.  <source> will be an absolute path when referring to the file
75 configured by `core.excludesFile`, or relative to the repository root
76 when referring to `.git/info/exclude` or a per-directory exclude file.
78 If `-z` is specified, the pathnames in the output are delimited by the
79 null character; if `--verbose` is also specified then null characters
80 are also used instead of colons and hard tabs:
82 <source> <NULL> <linenum> <NULL> <pattern> <NULL> <pathname> <NULL>
84 If `-n` or `--non-matching` are specified, non-matching pathnames will
85 also be output, in which case all fields in each output record except
86 for <pathname> will be empty.  This can be useful when running
87 non-interactively, so that files can be incrementally streamed to
88 STDIN of a long-running check-ignore process, and for each of these
89 files, STDOUT will indicate whether that file matched a pattern or
90 not.  (Without this option, it would be impossible to tell whether the
91 absence of output for a given file meant that it didn't match any
92 pattern, or that the output hadn't been generated yet.)
94 Buffering happens as documented under the `GIT_FLUSH` option in
95 linkgit:git[1].  The caller is responsible for avoiding deadlocks
96 caused by overfilling an input buffer or reading from an empty output
97 buffer.
99 EXIT STATUS
100 -----------
103         One or more of the provided paths is ignored.
106         None of the provided paths are ignored.
108 128::
109         A fatal error was encountered.
111 SEE ALSO
112 --------
113 linkgit:gitignore[5]
114 linkgit:gitconfig[5]
115 linkgit:git-ls-files[1]
119 Part of the linkgit:git[1] suite