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/attributesfile.
$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.attributesfileconfiguration option [...]. Its default value is$XDG_CONFIG_HOME/git/attributes. If$XDG_CONFIG_HOMEis either not set or empty,$HOME/.config/git/attributesis 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/gitattributesfile.
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