diff options
Diffstat (limited to 'Documentation/gitignore.txt')
-rw-r--r-- | Documentation/gitignore.txt | 40 |
1 files changed, 32 insertions, 8 deletions
diff --git a/Documentation/gitignore.txt b/Documentation/gitignore.txt index 08373f52bb..59321a2e82 100644 --- a/Documentation/gitignore.txt +++ b/Documentation/gitignore.txt @@ -13,9 +13,14 @@ DESCRIPTION ----------- A `gitignore` file specifies intentionally untracked files that -git should ignore. Each line in a `gitignore` file specifies a -pattern. - +git should ignore. +Note that all the `gitignore` files really concern only files +that are not already tracked by git; +in order to ignore uncommitted changes in already tracked files, +please refer to the 'git update-index --assume-unchanged' +documentation. + +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 @@ -38,11 +43,23 @@ precedence, the last matching pattern decides the outcome): * Patterns read from the file specified by the configuration variable 'core.excludesfile'. +Which file to place a pattern in depends on how the pattern is meant to +be used. Patterns which should be version-controlled and distributed to +other repositories via clone (i.e., files that all developers will want +to ignore) should go into a `.gitignore` file. Patterns which are +specific to a particular repository but which do not need to be shared +with other related repositories (e.g., auxiliary files that live inside +the repository but are specific to one user's workflow) should go into +the `$GIT_DIR/info/exclude` file. Patterns which a user wants git to +ignore in all situations (e.g., backup or temporary files generated by +the user's editor of choice) generally go into a file specified by +`core.excludesfile` in the user's `~/.gitconfig`. + The underlying git plumbing tools, such as -linkgit:git-ls-files[1] and linkgit:git-read-tree[1], read +'git-ls-files' and 'git-read-tree', read `gitignore` patterns specified by command-line options, or from files specified by command-line options. Higher-level git -tools, such as linkgit:git-status[1] and linkgit:git-add[1], +tools, such as 'git-status' and 'git-add', use patterns from the sources specified above. Patterns have the following format: @@ -57,6 +74,13 @@ Patterns have the following format: included again. If a negated pattern matches, this will override lower precedence patterns sources. + - If the pattern ends with a slash, it is removed for the + purpose of the following description, but it would only find + a match with a directory. In other words, `foo/` will match a + directory `foo` and paths underneath it, but will not match a + regular file or a symbolic link `foo` (this is consistent + with the way how pathspec works in general in git). + - 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. @@ -73,7 +97,7 @@ Patterns have the following format: An example: -------------------------------------------------------------- - $ git-status + $ git status [...] # Untracked files: [...] @@ -91,7 +115,7 @@ An example: *.html # except foo.html which is maintained by hand !foo.html - $ git-status + $ git status [...] # Untracked files: [...] @@ -119,4 +143,4 @@ Frank Lichtenheld, and the git-list <git@vger.kernel.org>. GIT --- -Part of the linkgit:git[7] suite +Part of the linkgit:git[1] suite |