我应该在哪里放置全局“ gitattributes”文件?


69

我搜集到了(尽管缺乏文档)一种全局设置Git属性的方法。但我不清楚在哪里放置必要的gitattributes文件。该说明称,他们属于在

$(prefix)/etc/gitattributes

但是哪里$(prefix)呢?特别是OS X(在中装有Git)会在/usr/local/git/bin/git哪里?替代地(或除此之外)会~/.gitattributes 工作吗?


3
在Git上下文中,“全局”通常表示“用户级别”;换句话说,全局设置会影响一个特定用户的所有存储库。相反,系统范围的设置会影响计算机所有用户的所有存储库。您对哪个级别感兴趣?用户级还是系统级?
jub0bs 2015年

@Jubobs:两者都存在(即,一个放置在另一个位置的位置;如果像我一样安装了多个Git,似乎也存在特定于Git版本的位置);但主要针对用户。
orome

Answers:


93

全局与系统范围的设置

您的问题的术语含糊不清。在Git上下文中,“全局”通常表示“用户级别”;换句话说,全局设置会影响一个特定用户(活动用户)的所有存储库。相反,系统范围的设置会影响计算机所有用户的。

存储库级gitattributes

(出于完整性考虑,我仅提及此内容。)

根据Pro Git书籍相关部分

如果只希望影响单个存储库(即,为该存储库的一个用户的工作流特有的文件分配属性),则应将属性放在$GIT_DIR/info/attributes文件中。

$GIT_DIR通常会扩展到<path-to-repo-root-directory>/.git

全局(用户级)gitattributes

根据Pro Git书籍相关部分

应该影响单个用户所有存储库的属性应放置在core.attributesfile配置选项[...]指定的文件中。默认值为$XDG_CONFIG_HOME/git/attributes。如果$XDG_CONFIG_HOME未设置或为空,$HOME/.config/git/attributes则改为使用。

您还可以运行以下命令,

git config --global core.attributesfile <path>

将Git指向<path>您的全局gitattributes文件的自定义路径,例如~/.gitattributes

系统范围内的gitattributes

根据Pro Git书籍相关部分

系统上所有用户的属性都应放置在$(prefix)/etc/gitattributes文件中。

这自然地引出了一个问题:

[...]但是哪里$(prefix)呢?

请参阅$(prefix)/ etc / gitconfig上的$(prefix)是什么?寻求答案。除非您分配prefix了一个自定义的非空值,否则$(prefix)默认情况下它不会扩展为;因此,您的系统级gitattributes文件应位于中/etc/


我有一个/usr/local/git/etc似乎受到尊重的目录gitattributes(至少受/usr/local/git/bin/git),但没有/etc/git。还有一个~/.config/git目录包含GitHub似乎已生成的忽略项。我不清楚所有这些如何组合在一起。
orome

@raxacoricofallapatorius在GitHub安装期间用于编译Git的前缀可能是/usr/local/git/;如果是这样,/usr/local/git/etc/gitattributes将是您系统范围内的gitattributes;请参阅我的答案中的“系统范围的gitattributes”部分。至于~/.config/git,这就是您的全局gitattributes;请参阅我的答案中的“全局(用户级)gitattributes”部分。
jub0bs 2015年

1
所以(检查)任何东西etc都将是系统范围的(或者至少是给定Git的系统范围的),而如果我已经将(或 )设置 为其他东西的话,则是各种各样的($XDG_CONFIG_HOME/git/...~/.configs/git/..无关紧要)。例如,如果我将其设置为(viz。),那么它将用于我的“全局”(用户级别)设置。gitignorecore.attributesfilecore.excludesfile/.gitattributes ~/.gitignore
orome

@raxacoricofallapatorius如果我对您的理解正确,那么答案是否定的。存储库级别的设置优先于用户级别的设置,而用户级别的设置优先于系统范围的设置。
jub0bs 2015年

是的,存储库级别取代了这些级别。我正在检查“全局变量”。
orome
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.