提交时Git配置如何评估?

3
我正在设置我的第一个Git Repo,在运行时出现以下情况:
git config --list

我注意到某些配置值有多个条目;

core.autocrlf=input
[...]
core.autocrlf=false

我猜这些值是重复的,因为它们出现在多个配置文件(系统、全局、文件)中。我的问题是,哪一个值具有优先权?配置文件是否逐行读取,并且在提交期间使用最后一个条目作为所使用的条目?

2个回答

5

以下是来自The MYYN的借鉴,这是查找配置文件的三个位置:

  • $GIT_DIR/config
  • ~/.gitconfig (--global)
  • $(prefix)/etc/gitconfig

假设你全局设置了你的电子邮件地址为niko.schwarz@gmail.com。现在,我们创建一个新的仓库:

$ cd /tmp
$ mkdir try && cd try
$ git init
$ git config user.email niko.schwarz@s-i.ch
$ touch hi
$ git -add .
$ git commit -m 'bla'

接下来,您的user.email将被设置为两个值:

$ git config --list | grep niko.schwarz
user.email=niko.schwarz@gmail.com
user.email=niko.schwarz@s-i.ch

但是如果您查看日志,电子邮件地址将被设置为特定于存储库的电子邮件地址:

$ git log | grep niko.schwarz
Author: Niko Schwarz <niko.schwarz@s-i.ch>
    Signed-off-by: Niko Schwarz <niko.schwarz@s-i.ch>

因此,本地优先于全局,这是值列表的顺序。现在,稍微有点冒险,我确实假设git config --list以使后面的条目优先显示的顺序显示内容。

1
谢谢你的回答,但不要让我意识到我本可以自己进行这个简单的测试;真是太丢人了!;) - Mathew

4

如果没有使用--file显式设置,git-config将在三个文件中搜索配置选项:

  • $GIT_DIR/config

  • ~/.gitconfig (--global)

  • $(prefix)/etc/gitconfig

如果未给出更多选项,则所有读取选项都将读取可用的所有这些文件。如果全局或系统范围的配置文件不可用,它们将被忽略。

每个存储库中的.git/config文件用于存储该存储库的配置,而$HOME/.gitconfig用于存储作为.git/config文件后备值的每个用户的配置。文件/etc/gitconfig可用于存储系统范围的默认配置。

应优先考虑最常见到存储库特定条目。

或者更流行的说法(借鉴自Niko):本地优先于全局


嗨嗨,我喜欢被引用:)引用加一。 - nes1983

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接