Skip to content

Commit 90b2290

Browse files
peffgitster
authored andcommitted
Documentation: clarify use of .git{ignore,attributes} versus .git/info/*
gitignore patterns can be read from three different files, while gitattributes can come from two files. Let's provide some hints to the user about the differences and how they are typically used. Suggested by Toby Corkindale, but gratuitously reworded by Jeff King. Signed-off-by: Toby Corkindale <[email protected]> Signed-off-by: Jeff King <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 525d461 commit 90b2290

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

Documentation/gitattributes.txt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,13 @@ path in question, and its parent directories (the further the
6363
directory that contains `.gitattributes` is from the path in
6464
question, the lower its precedence).
6565

66+
If you wish to affect only a single repository (i.e., to assign
67+
attributes to files that are particular to one user's workflow), then
68+
attributes should be placed in the `$GIT_DIR/info/attributes` file.
69+
Attributes which should be version-controlled and distributed to other
70+
repositories (i.e., attributes of interest to all users) should go into
71+
`.gitattributes` files.
72+
6673
Sometimes you would need to override an setting of an attribute
6774
for a path to `unspecified` state. This can be done by listing
6875
the name of the attribute prefixed with an exclamation point `!`.

Documentation/gitignore.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,18 @@ precedence, the last matching pattern decides the outcome):
3838
* Patterns read from the file specified by the configuration
3939
variable 'core.excludesfile'.
4040

41+
Which file to place a pattern in depends on how the pattern is meant to
42+
be used. Patterns which should be version-controlled and distributed to
43+
other repositories via clone (i.e., files that all developers will want
44+
to ignore) should go into a `.gitignore` file. Patterns which are
45+
specific to a particular repository but which do not need to be shared
46+
with other related repositories (e.g., auxiliary files that live inside
47+
the repository but are specific to one user's workflow) should go into
48+
the `$GIT_DIR/info/exclude` file. Patterns which a user wants git to
49+
ignore in all situations (e.g., backup or temporary files generated by
50+
the user's editor of choice) generally go into a file specified by
51+
`core.excludesfile` in the user's `~/.gitconfig`.
52+
4153
The underlying git plumbing tools, such as
4254
linkgit:git-ls-files[1] and linkgit:git-read-tree[1], read
4355
`gitignore` patterns specified by command-line options, or from

0 commit comments

Comments
 (0)