为了账号安全,请及时绑定邮箱和手机立即绑定

我的Git配置中的设置来自哪里?

我的Git配置中的设置来自哪里?

Git
浮云间 2019-08-06 17:12:57
我的Git配置中的设置来自哪里?我注意到core.autocrlf我跑的时候有两个列表git config -l$ git config -lcore.symlinks=falsecore.autocrlf=falsecolor.diff=autocolor.status=autocolor.branch=autocolor.interactive=truepack.packsizelimit=2ghelp.format=htmlhttp.sslcainfo=/bin/curl-ca-bundle.crtsendemail.smtpserver=/bin/msmtp.exediff.astextplain.textconv=astextplainrebase.autosquash=trueuser.name=nameuser.email=email@example.comcore.autocrlf=true最后3个(来自user.name)是我c:\users\username\.gitconfig文件中唯一的。所有其他的来自哪里?为什么core.autocrlf列出两次?这是使用msysgit 1.8.3,我也安装了SourceTree(Windows 7)。在SourceTree中,我取消选中“允许SourceTree修改全局Git配置文件”
查看完整描述

3 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

Git检查4个位置的配置文件:

  1. 您机器的系统.gitconfig文件。

  2. 您的用户.gitconfig文件位于~/.gitconfig

  3. 位于$XDG_CONFIG_HOME/git/config或的第二个特定于用户的配置文件$HOME/.config/git/config

  4. 本地repo的配置文件.git/config

设置按以下顺序级联,每个文件添加或覆盖其上方文件中定义的设置。

  1. 系统配置

  2. 用户配置。

  3. 特定于回购的配置。

您可以使用以下命令查看每个文件的定义:

# System, applies to entire machine and all users$ git config --system --list
$ git config --system --edit# User defined$ git config --global --list
$ git config --global --edit

您可以通过打开该repo的文件来查看repo特定文件的定义.git/config

如果您在Windows上使用msysgit,则可能会在Windows命令提示符处找到您指向的用户~/.gitconfig文件。%homepath%echo %homepath%

从以下文档git config

如果未明确设置--file,则有四个文件git config将搜索配置选项:

  • $(prefix)/etc/gitconfig

    系统范围的配置文件。

  • $XDG_CONFIG_HOME/git/config

    第二个特定于用户的配置文件。如果$XDG_CONFIG_HOME未设置或为空,$HOME/.config/git/config将使用。此文件中设置的任何单值变量都将被其中的任何内容覆盖~/.gitconfig。如果您有时使用旧版本的Git,最好不要创建此文件,因为最近添加了对此文件的支持。

  • ~/.gitconfig

    用户特定的配置文件。也称为“全局”配置文件。

  • $GIT_DIR/config

    存储库特定的配置文件。

如果没有给出进一步的选项,所有阅读选项将读取所有可用的文件。如果全局或系统范围的配置文件不可用,则将忽略它们。如果存储库配置文件不可用或不可读,git config则将以非零错误代码退出。但是,在任何情况下都不会发出错误消息。

按上面给出的顺序读取文件,找到的最后一个值优先于先前读取的值。当获取多个值时,将使用来自所有文件的键的所有值。

所有写入选项都将默认写入特定于存储库的配置文件。请注意,这也会影响--replace-all和等选项 --unsetgit config 只会一次更改一个文件。

您可以通过命令行选项或环境变量覆盖这些规则。在--global--system选项将限制分别用于全球或全系统文件的文件。该GIT_CONFIG环境变量有类似的效果,但您可以指定任何你想要的文件名。


查看完整回答
反对 回复 2019-08-06
?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

在以前安装了Git for Windows并随后卸载之后,我发现在C:\ Users \ All Users \ Git \ config中安装了一个配置文件,这是一个系统级配置文件,它会持续存在并将影响任何未来的mingw32 git包(就我而言,我正在运行我公司提供的便携式mingw32 git包)。当我跑

git config --system --edit

它会显示位于mingw32 / etc / gitconfig的系统配置文件,但仍会加载第一个位置的值。这显示为在尝试使用git lfs时配置值发生冲突的警告

WARNING: These git config values clash:
  git config "http.sslcainfo" = "C:/Users/foo/AppData/Local/Programs/Git/mingw64/ssl/certs/ca-bundle.crt"
  git config "http.sslcainfo" = "/ssl/certs/ca-bundle.crt"


查看完整回答
反对 回复 2019-08-06
  • 3 回答
  • 0 关注
  • 991 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信