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::
	Also output details about the matching pattern (if any)
	for each given pathname. 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-parseable (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
