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

2024-04-14

我注意到我有两个列表core.autocrlf当我跑步时git config -l

$ git config -l
core.symlinks=false
core.autocrlf=false
color.diff=auto
color.status=auto
color.branch=auto
color.interactive=true
pack.packsizelimit=2g
help.format=html
http.sslcainfo=/bin/curl-ca-bundle.crt
sendemail.smtpserver=/bin/msmtp.exe
diff.astextplain.textconv=astextplain
rebase.autosquash=true
user.name=name
[email protected] /cdn-cgi/l/email-protection
core.autocrlf=true

最后三个(从 user.name 开始)是我的中唯一的C:\users\username\.gitconfig文件。其他所有的都从哪里来?为什么 core.autocrlf 列出两次?

这是使用 MSysGit 1.8.3,我还安装了 Sourcetree (Windows 7)。在 Sourcetree 中,我取消选中“允许 Sourcetree 修改全局 Git 配置文件”


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

  1. 您机器的系统.gitconfig file.
  2. 您的用户.gitconfig文件位于~/.gitconfig.
  3. 第二个用户特定的配置文件位于$XDG_CONFIG_HOME/git/config or $HOME/.config/git/config.
  4. 本地存储库的配置文件.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

您可以通过打开文件来查看特定于存储库的文件所定义的内容.git/config对于该存储库。

如果您在 Windows 上使用 MSysGit,您可能会找到您的用户~/.gitconfig文件在任何地方%homepath%指向如果您使用echo %homepath%从 Windows 命令提示符。

来自的文档git config http://jk.gs/git-config.html#FILES:

如果没有明确设置--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 and --unset. git config 只会改变 一次一个文件。

您可以通过命令行选项或通过 环境变量。这--global--system选项将 分别将使用的文件限制为全局文件或系统范围文件。 这GIT_CONFIG环境变量有类似的效果,但是你 可以指定任何你想要的文件名。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我的 Git 配置中的设置来自哪里? 的相关文章

  • 如何在 Android Studio 中比较两个 Git 分支?

    我不确定是否可以将主分支 或任何其他分支 与当前功能分支进行比较 例如GIT does 我想要两个分支 主分支和功能分支 之间的差异 以便我可以在合并之前比较差异 我发现 Git UI 对用户不太友好 就像在 AS 中一样 我可以遍历代码并
  • 如何在 git diff 中按标点符号拆分单词?

    我对以下命令有一些运气 git diff color words lt gt space lt gt 但它似乎没有在第一个字符类中正确地否定方括号 我试过这个 git diff color words lt gt space lt gt 为
  • git-svn --忽略路径

    我现在在 git svn 的 ignore paths 选项上挣扎了几个小时 试图从大型存储库中仅获取某些标签 我想在 dev 处开始获取 看起来像 gt svn ls http 192 168 0 2 svn repo corporati
  • 使用 GIT 自动增加 AssemblyFileVersion

    好吧 我知道这可能不是传统的 但除此之外 我使用 AssemblyFileVersion 作为我的 构建名称 字符串 它的格式如下 File Version information for an assembly consists of t
  • 克隆存储库而不将其设为原始远程存储库

    我正在从一台将被擦除的计算机上克隆一个 git 存储库 是否可以在不创建原始存储库的情况下克隆存储库origin master 或者我是否需要克隆它 然后删除远程分支 这是通过git remote rm origin Edit 存储库只有一
  • 如何重命名 GitHub 网站上的目录/文件夹?

    我在 GitHub 网站上找到了一种方法rename https github com blog 1436 moving and renaming files on github一个文件并成功完成 我也找到了一种方法rename https
  • 如何查看上次提交和现在之间发生了什么变化(进行一些更改后)

    与此类似question https stackoverflow com questions 1552340 how to list the file names only that changed between two commits但
  • Git 命令显示我对给定远程的权限

    同事可以从远程存储库获取数据 但不能推送到远程存储库 我怀疑他对遥控器只有读权限而没有写权限 我可以通过多种方法来检查这一点 但我想不出他可以在 git 中使用的方法 是否有 git 命令可以显示给定远程存储库的权限 No Git 本身不处
  • 具有单独 work_tree 的 Git 子模块

    我按照本页上的教程使通过 Git 部署我的网站变得简单 http toroid org ams git website howto http toroid org ams git website howto 到目前为止一切都很好 但是我最近
  • Windows 版 GitKraken 中的文件名太长

    正如建议的Q22575737 https stackoverflow com a 22575737 6623589 我已经更新了我的注册表并设置了git config system core longpaths true在处理长路径时 问题
  • 交互式变基后,本地 Git 分支已偏离原始分支

    我有一个本地分行 CRM ayrshireminis 其中有一些我已推送到原点的提交 origin CRM ayrshireminis 这个分支是从创建的develop大约一周前的一个分支 其他合作者已经在该分支上完成了一周的工作 我想做的
  • 如何使用 .gitattributes 避免在 git root 中包含文件夹,但在 zip 的 dist 文件夹中包含同名文件夹

    我有一个名为lib在存储库的根目录和另一个名为lib在 dist 文件夹中 我正在尝试使用 gitattributes文件排除除 dist 之外的所有文件夹和文件 以便任何下载为 zip 或 tarball 的人都只会 git 分发文件 我
  • DVCS命令的统一

    当处理多个 开源 项目时 多个版本控制系统开始出现问题 虽然它们共享共同的操作 但我经常在输入时犯错误hg add反而git add 我记得前段时间看到过一个项目 通过提供基本命令以统一的方式访问不同的源代码控制软件提交 ci add等在外
  • Git:如何变基到特定提交?

    我想变基到特定的提交 而不是另一个分支的 HEAD A B C master D topic to A B C master D topic 代替 A B C master D topic 我怎样才能做到这一点 您可以通过在您喜欢的提交上创
  • 忽略 git 中的本地配置文件

    Rails 应用程序中有一些本地文件 属于我们存储库的一部分 我希望 git 忽略它们 基本上 我希望 git 忽略我对 config environments 目录和 config application rb 文件中的任何内容所做的所有
  • 分支明显不同,但提交历史是相同的

    git status告诉我我的分支和我在另一个存储库上开始的分支已经分歧 On branch master Your branch and origin master have diverged and have 13 and 13 dif
  • IntelliJ:查看本地和 git 提交/分支之间所有已更改文件的差异

    使用 IntelliJ 的 diff 查看器是检查代码的一种非常好的方法 因为您可以使用 IntelliJ 代码编辑器的所有功能 重构 完成等 在本地版本中进行更改 不幸的是 我还没有弄清楚当你在 IntelliJ 中进行代码审查时如何做最
  • git - 更新 fork 的 master 并将我的分支重新建立到它之上?

    我分叉了一个 github 项目 然后将其克隆到本地 然后我在新分支中做了一些更改my github the project repo 然后我添加并提交了更改 并推送到我的 github 存储库并提交了拉取请求 所有者已收到我的请求 并希望
  • Git:显示分支之间的差异,忽略合并的提交

    我的存储库历史记录看起来像这样 x y z branch a b c d e master 我想获得 branch 完整历史记录的单个差异 即 像 git diff 输出 我不想要像 git log p 产生的一大堆差异 而不包括任何从 m
  • 为什么我无法创建/签出该分支?

    我正在尝试创建本地 Git 分支 但它不起作用 以下是我正在使用的命令 tablet edit11 git checkout b edit 11 Switched to a new branch edit 11 tablet edit11

随机推荐