git-check-ignore(1)
===================

NAME
----
git-check-ignore - Debug gitignore / exclude files


SYNOPSIS
--------
[verse]
'git check-ignore' [<options>] <pathname>...
'git check-ignore' [<options>] --stdin

DESCRIPTION
-----------

For each pathname given via the command-line or from a file via
`--stdin`, check whether the file is excluded by .gitignore (or other
input files to the exclude mechanism) and output the path if it is
excluded.

By default, tracked files are not shown at all since they are not
subject to exclude rules; but see `--no-index'.

OPTIONS
-------
-q, --quiet::
	Don't output anything, just set exit status.  This is only
	valid with a single pathname.

-v, --verbose::
	Instead of printing the paths that are excluded, for each path
	that matches an exclude pattern, print the exclude pattern
	together with the path.  (Matching an exclude pattern usually
	means the path is excluded, but if the pattern begins with "`!`"
	then it is a negated pattern and matching it means the path is
	NOT excluded.)
+
For precedence rules within and between exclude sources, see
linkgit:gitignore[5].

--stdin::
	Read pathnames from the standard input, one per line,
	instead of from the command-line.

-z::
	The output format is modified to be machine-parsable (see
	below).  If `--stdin` is also given, input paths are separated
	with a NUL character instead of a linefeed character.

-n, --non-matching::
	Show given paths which don't match any pattern.  This only
	makes sense when `--verbose` is enabled, otherwise it would
	not be possible to distinguish between paths which match a
	pattern and those which don't.

--no-index::
	Don't look in the index when undertaking the checks. This can
	be used to debug why a path became tracked by e.g. `git add .`
	and was not ignored by the rules as expected by the user or when
	developing patterns including negation to match a path previously
	added with `git add -f`.

OUTPUT
------

By default, any of the given pathnames which match an ignore pattern
will be output, one per line.  If no pattern matches a given path,
nothing will be output for that path; this means that path will not be
ignored.

If `--verbose` is specified, the output is a series of lines of the form:

<source> <COLON> <linenum> <COLON> <pattern> <HT> <pathname>

<pathname> is the path of a file being queried, <pattern> is the
matching pattern, <source> is the pattern's source file, and <linenum>
is the line number of the pattern within that source.  If the pattern
contained a "`!`" prefix or "`/`" suffix, it will be preserved in the
output.  <source> will be an absolute path when referring to the file
configured by `core.excludesFile`, or relative to the repository root
when referring to `.git/info/exclude` or a per-directory exclude file.

If `-z` is specified, the pathnames in the output are delimited by the
null character; if `--verbose` is also specified then null characters
are also used instead of colons and hard tabs:

<source> <NULL> <linenum> <NULL> <pattern> <NULL> <pathname> <NULL>

If `-n` or `--non-matching` are specified, non-matching pathnames will
also be output, in which case all fields in each output record except
for <pathname> will be empty.  This can be useful when running
non-interactively, so that files can be incrementally streamed to
STDIN of a long-running check-ignore process, and for each of these
files, STDOUT will indicate whether that file matched a pattern or
not.  (Without this option, it would be impossible to tell whether the
absence of output for a given file meant that it didn't match any
pattern, or that the output hadn't been generated yet.)

Buffering happens as documented under the `GIT_FLUSH` option in
linkgit:git[1].  The caller is responsible for avoiding deadlocks
caused by overfilling an input buffer or reading from an empty output
buffer.

EXIT STATUS
-----------

0::
	One or more of the provided paths is ignored.

1::
	None of the provided paths are ignored.

128::
	A fatal error was encountered.

SEE ALSO
--------
linkgit:gitignore[5]
linkgit:git-config[1]
linkgit:git-ls-files[1]

GIT
---
Part of the linkgit:git[1] suite
