Git中全局配置和本地配置有什么区别?

38

我是Git的初学者。我在网上找到了以下信息。

根据我的了解,

  • 本地配置:文件中的值只适用于单个代码库。
  • 全局配置:文件中的配置值只适用于单个用户。

请问还有哪些配置方面的区别吗?


4
https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration - phd
3个回答

37
Git使用分层配置方法,如果没有被覆盖掉的话,具有更广泛作用域的设置将被继承。最高级别是系统配置(适用于所有用户,通常在/etc/git中),然后是全局配置(可以用个人设置覆盖系统默认值,位于用户主目录下,例如$HOME/.gitconfig$HOME/.config/git/config),最后是仓库的本地配置(位于仓库根目录的.git/config文件),它可以覆盖上述所有配置并设置特定于该仓库的选项。所有配置文件都具有相同的语法,但作用域不同。这提供了很大的灵活性。

1
哪一个更常用,.gitconfig 还是 .config/git/config?我认为是第一个。 - Timo
2
第一个我认为更常见。 - MrTux
如果您在Windows上使用Git且未设置%HOME%,Git将使用%HOMEDRIVE%%HOMEPATH% - MrTux
顺便提一下,对于 macOS 操作系统,system 的位置在 /usr/local/git/etc/gitconfig - Manuel Jordan

37

Git提供了一个名为git config的工具,它可以让你配置控制git操作的各个方面的变量。

git config的值在升级之间保持不变。因此,你只需要设置一次即可。

基本上,有三个地方来存储这些变量:

  1. 系统。
  2. 全局。
  3. 本地。

1. 系统:这些变量对于系统中的每个用户都可用,并存储在

[路径]/etc/gitconfig.
例如:C:/Program Files/Git/etc/gitconfig

你可以通过传递选项--system使git从系统读取和写入。这还需要你拥有管理权限。


2. 全局:全局配置对于当前用户和所有项目可用,并存储在

~/.gitconfig~/.config/git/config
例如:C:/Users/用户名/.gitconfig

你可以通过传递选项--global使git从全局读取和写入。


3. 本地:本地配置仅对当前仓库可用,并存储在

[git仓库]/.git/config
例如:C:/Users/MyProject/.git/config

你可以通过传递选项--local使git从本地读取和写入。


示例:

Create a local config
$ git config --local user.name "Local User"

# Create a global config
$ git config --global user.name "Global User"

# Create a system config
$ sudo git config --system user.name "System User"

验证您配置文件的来源:

git config --list --show-origin

同样,要记住每个级别都会覆盖前一个级别的值。

优先级:

本地 > 全局 > 系统


1
自去年以来,已经有了--show-scope选项,它可以命名级别。 - Timo
4
最好的留到最后。顺便说一句,“如果你没有指定想要使用的级别,这个‘本地’是默认值”,正如其他答案所述。 - Timo
1
关于 --show-scope,将其用作 git config --list --show-scope - Manuel Jordan
顺便提一下,对于 macOS 操作系统,system 的位置在 /usr/local/git/etc/gitconfig - Manuel Jordan

8

本地级别配置应用于上下文存储库中调用git config的位置。本地配置值存储在文件中,可以在存储库的.git目录中找到:.git/config。如果您不指定要使用哪个级别,则这是默认值。

而全局配置值存储在位于用户主目录中的文件中。在Unix系统上为~ /.gitconfig,在Windows上为C:\Users\<username>\.gitconfig


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