如何找出使用哪个Git配置文件以及如何覆盖设置?

时间:2017-03-14 12:57:07

标签: git git-config

我有两个相关的问题:

  1. 如何准确确定我的Git bash客户端正在使用哪个配置文件?
  2. 我可以覆盖正在使用的配置文件中的设置吗?
  3. 我知道有一个系统,全局和本地(又名项目).gitconfig文件。并且,根据Git site,这些“级别”(系统,全局,本地)中的每一个都会覆盖前一级别的值,因此./git/config(本地)中的值优于{{1}中的值例如。

    换句话说,我们正在处理层次结构,本地配置文件中的任何声明都将优先于全局或系统配置文件中的声明。

    但是,如果在全局文件(例如代理)中存在设置并且本地文件中存在而不是,那么该设置是否使用全局代理设置?这意味着在应用层次结构规则之前,Git可以处理所有配置文件中的所有设置。

    然后,在上面的示例中,如果全局中的代理设置与本地配置文件中的其他设置一起使用,我该如何覆盖它?

3 个答案:

答案 0 :(得分:13)

如何准确确定Git bash客户端正在使用哪个gitconfig文件?

您可以使用--show-origin选项

git config --list --show-origin

这将显示从中获取每个设置值的文件。

我可以覆盖正在使用的Git配置文件中的设置吗?

您可以通过将要使用的值放在更高优先级的源中来覆盖优先级较低的源中的设置。

我已经阅读了你的例子,我真的不确定我是否得到了这个问题。如果代理设置在您的全局文件中,那么正如您已经指出的那样,您可以通过在本地文件中放置一个值来覆盖它。

答案 1 :(得分:2)

  

这意味着在应用层次结构规则之前,Git可以处理所有配置文件中的所有设置。

是。结果是附加的。每个级别的设置合并与上一级别的设置。当两个级别指定相同的设置时,较低的更具体的设置将覆盖不太具体的设置。

git configuration documentation明确指出:

  

每个存储库中的.git / config文件用于存储   该存储库的配置,以及$ HOME / .gitconfig用于   将每用户配置存储为.git / config的回退值   文件。文件/ etc / gitconfig可用于存储系统范围   默认配置。

至于你的第二个问题,

  

然后,在上面的示例中,如果来自global的代理设置与本地配置文件中的其他设置一起使用,我该如何覆盖它?

在项目的本地配置中提供更具体的设置。

答案 2 :(得分:0)

1。您可以查看所有设置以及它们来自何处 使用:

$ git config --list --show-origin

设置的来源可能来自以下3个不同的配置文件中的1个。

2。 Git环境设置:

Git_config_visualisation

在系统上安装git时,您需要做一些事情来自定义Git 环境。 Git有一个名为git config的工具,可让您获取和设置配置变量,以控制Git操作的所有方面。它们可以存储在上述3个位置之一中。

考虑到您拥有Windows环境:

  • 系统级别[ git config --system ]:

您可以使用此命令在系统级别编辑/查看git设置的配置。默认情况下,它适用于系统及其所有存储库上的每个用户。如果你是 使用Windows的2.x或更高版本的Git,也有一个系统级的配置文件位于 Windows XP及更高版本中的'C:\Documents and Settings\All Users\Application Data\Git\config' 'C:\Program Data\Git\config'在Windows Vista和更高版本上。

  • 用户级别[ git config --global ]:

我知道--global标志可能会误导您,但请记住,配置设置专门适用于您,即您当前登录的当前用户。 Git通过传递--global选项专门对此文件进行读写,这会影响您在系统上使用的所有存储库。在Windows上,git在主目录(即C:\Users\$USER\.gitconfig

)中查找此文件
  • 目录级别[ git config --local ]:

您可以使用--local选项强制Git从该文件读取和写入。您可以在当前使用的任何存储库的.git目录中找到此配置文件 使用。 任何人都可以查看/编辑这些配置设置。

注意:每个级别都覆盖上一个级别中的值,因此.git/config中的值覆盖Users\$USER\.gitconfig中的值