I gather there is (despite the lack of documentation) a way to set Git attributes globally; but I'm not clear where to place the necessary gitattributes
file. The instructions say they belong in
$(prefix)/etc/gitattributes
But where is $(prefix)
? In particular, where would it be for OS X (with Git in /usr/local/git/bin/git
)? Alternately (or in addition) would ~/.gitattributes
work?
These path-specific settings are called Git attributes and are set either in a . gitattributes file in one of your directories (normally the root of your project) or in the . git/info/attributes file if you don't want the attributes file committed with your project.
gitattributes file allows you to specify the files and paths attributes that should be used by git when performing git actions, such as git commit , etc. In other words git automatically saves the file according to the attributes specified, every time a file is created or saved.
A gitattributes file is a simple text file that gives attributes to pathnames. Each line in gitattributes file is of form: pattern attr1 attr2 ... That is, a pattern followed by an attributes list, separated by whitespaces. Leading and trailing whitespaces are ignored.
If you cannot open your GITATTRIBUTES file correctly, try to right-click or long-press the file. Then click "Open with" and choose an application. You can also display a GITATTRIBUTES file directly in the browser: Just drag the file onto this browser window and drop it.
There is some ambiguity in your question's terminology. In a Git context, "global" usually means "user-level"; in other words, a global setting affect all repositories for one specific user (the active one). In contrast, a system-wide setting affects all repositories for all users of a machine.
(I'm only mentioning this for completeness.)
According to the relevant section of the Pro Git book,
If you wish to affect only a single repository (i.e., to assign attributes to files that are particular to one user’s workflow for that repository), then attributes should be placed in the
$GIT_DIR/info/attributes
file.
$GIT_DIR
would typically expand to <path-to-repo-root-directory>/.git
.
According to the relevant section of the Pro Git book,
Attributes that should affect all repositories for a single user should be placed in a file specified by the
core.attributesfile
configuration option [...]. Its default value is$XDG_CONFIG_HOME/git/attributes
. If$XDG_CONFIG_HOME
is either not set or empty,$HOME/.config/git/attributes
is used instead.
You can also run the following command,
git config --global core.attributesfile <path>
to point Git to a custom path <path>
for your global gitattributes file, e.g. ~/.gitattributes
.
According to the relevant section of the Pro Git book,
Attributes for all users on a system should be placed in the
$(prefix)/etc/gitattributes
file.
which naturally begs the question:
[...] But where is
$(prefix)
?
See What is $(prefix) on $(prefix)/etc/gitconfig? for an answer. Unless you've assigned prefix
a custom, non-empty value, $(prefix)
expands to nothing by default; therefore, your system-wide gitattributes
file should reside in /etc/
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With