| gitignore(5) |
| ============ |
| |
| NAME |
| ---- |
| gitignore - Specifies intentionally untracked files to ignore |
| |
| SYNOPSIS |
| -------- |
| $GIT_DIR/info/exclude, .gitignore |
| |
| DESCRIPTION |
| ----------- |
| |
| A `gitignore` file specifies intentionally untracked files that |
| git should ignore. Each line in a `gitignore` file specifies a |
| pattern. |
| |
| When deciding whether to ignore a path, git normally checks |
| `gitignore` patterns from multiple sources, with the following |
| order of precedence, from highest to lowest (within one level of |
| precedence, the last matching pattern decides the outcome): |
| |
| * Patterns read from the command line for those commands that support |
| them. |
| |
| * Patterns read from a `.gitignore` file in the same directory |
| as the path, or in any parent directory, with patterns in the |
| higher level files (up to the root) being overridden by those in |
| lower level files down to the directory containing the file. |
| These patterns match relative to the location of the |
| `.gitignore` file. A project normally includes such |
| `.gitignore` files in its repository, containing patterns for |
| files generated as part of the project build. |
| |
| * Patterns read from `$GIT_DIR/info/exclude`. |
| |
| * Patterns read from the file specified by the configuration |
| variable 'core.excludesfile'. |
| |
| The underlying git plumbing tools, such as |
| gitlink:git-ls-files[1] and gitlink:git-read-tree[1], read |
| `gitignore` patterns specified by command-line options, or from |
| files specified by command-line options. Higher-level git |
| tools, such as gitlink:git-status[1] and gitlink:git-add[1], |
| use patterns from the sources specified above. |
| |
| Patterns have the following format: |
| |
| - A blank line matches no files, so it can serve as a separator |
| for readability. |
| |
| - A line starting with # serves as a comment. |
| |
| - An optional prefix '!' which negates the pattern; any |
| matching file excluded by a previous pattern will become |
| included again. If a negated pattern matches, this will |
| override lower precedence patterns sources. |
| |
| - If the pattern does not contain a slash '/', git treats it as |
| a shell glob pattern and checks for a match against the |
| pathname without leading directories. |
| |
| - Otherwise, git treats the pattern as a shell glob suitable |
| for consumption by fnmatch(3) with the FNM_PATHNAME flag: |
| wildcards in the pattern will not match a / in the pathname. |
| For example, "Documentation/\*.html" matches |
| "Documentation/git.html" but not |
| "Documentation/ppc/ppc.html". A leading slash matches the |
| beginning of the pathname; for example, "/*.c" matches |
| "cat-file.c" but not "mozilla-sha1/sha1.c". |
| |
| An example: |
| |
| -------------------------------------------------------------- |
| $ git-status |
| [...] |
| # Untracked files: |
| [...] |
| # Documentation/foo.html |
| # Documentation/gitignore.html |
| # file.o |
| # lib.a |
| # src/internal.o |
| [...] |
| $ cat .git/info/exclude |
| # ignore objects and archives, anywhere in the tree. |
| *.[oa] |
| $ cat Documentation/.gitignore |
| # ignore generated html files, |
| *.html |
| # except foo.html which is maintained by hand |
| !foo.html |
| $ git-status |
| [...] |
| # Untracked files: |
| [...] |
| # Documentation/foo.html |
| [...] |
| -------------------------------------------------------------- |
| |
| Another example: |
| |
| -------------------------------------------------------------- |
| $ cat .gitignore |
| vmlinux* |
| $ ls arch/foo/kernel/vm* |
| arch/foo/kernel/vmlinux.lds.S |
| $ echo '!/vmlinux*' >arch/foo/kernel/.gitignore |
| -------------------------------------------------------------- |
| |
| The second .gitignore prevents git from ignoring |
| `arch/foo/kernel/vmlinux.lds.S`. |
| |
| Documentation |
| ------------- |
| Documentation by David Greaves, Junio C Hamano, Josh Triplett, |
| Frank Lichtenheld, and the git-list <git@vger.kernel.org>. |
| |
| GIT |
| --- |
| Part of the gitlink:git[7] suite |