gitconfig 文件中的 `[github]` 和 `[github "user"]` 有啥区别?
Posted
技术标签:
【中文标题】gitconfig 文件中的 `[github]` 和 `[github "user"]` 有啥区别?【英文标题】:what's the difference between `[github]` and `[github "user"]` in a gitconfig file?gitconfig 文件中的 `[github]` 和 `[github "user"]` 有什么区别? 【发布时间】:2014-02-02 22:33:26 【问题描述】:我的 gitconfig 中有以下两个块,用真实信息代替 <placeholders>
:
[github]
user = <name>
token = <token>
email = <email address>
[github "user"]
user = <name>
token = <token>
email = <email address>
两者都包含相同的 3 个值,我想这是不必要的重复,但有什么区别,我应该删除哪个?它不会造成任何问题。
另外,我也有这个块:
[user]
name = <name>
email = <email address>
再次,相同的姓名和电子邮件地址。
更新:运行git config --list
显示的值
github.user
github.token
github.email
还有
github.user.user
github.user.token
github.user.email
这对我来说看起来很不对劲,我从文件中删除了整个 [github "user"]
块。似乎还没有损坏。
【问题讨论】:
【参考方案1】:据我所知,该语法意味着您有一个 github
部分和一个 github "user"
子部分 (see under Syntax)。这意味着您可以访问github
,也可以访问github.user
,正如您在--list
中所注意到的那样。这样你就可以存储不同的值。正如您所见,由于您的值相同,您应该能够删除 [github "user"]
而不会破坏任何内容。
【讨论】:
【参考方案2】:注意:注意 git config 小节:最近对“git config
”的更新破坏了小节中的更新变量,已在 Git 2.19(2018 年第三季度)中更正。
这说明了节和小节之间的区别。
见commit bff7df7、commit 2d84f13(2018 年 8 月 8 日)和 commit 999d902(2018 年 8 月 1 日)Stefan Beller (stefanbeller
)。(由 Junio C Hamano -- gitster
-- 合并于 commit 2a2c18f,8 月 20 日2018)
config
:在写作时修复区分大小写的小节名称一个用户报告了一个关于部分混淆的子模块问题,但它可以归结为以下测试用例:
$ git init test && cd test $ git config foo."Bar".key test $ git config foo."bar".key test $ tail -n 3 .git/config [foo "Bar"] key = test key = test
子部分区分大小写,我们对它们进行了正确阅读测试。 但是,我们没有使用区分大小写的小节名称正确写出配置的测试,这就是为什么在6ae996f(
git_config_set
:利用配置解析器的事件流,2018-04-09,Git 2.18 )不幸的是,我们必须区分看起来像这样的旧式配置:
[foo.Bar] key = test
和上面看到的新引用样式。
旧样式被记录为不区分大小写,因此我们需要保留 '
strncasecmp
';尽管旧样式配置的结果设置与配置不同。
确保使用 Git 2.19(如上所示),或者至少使用 Git 2.13 或更高版本。
没有记录的是git -c
曾经小写变量名:
vonc@bvonc MINGW64 ~
$ git version
git version 2.12.0.windows.1
vonc@bvonc MINGW64 ~
$ git -c VAR=c config -l|grep var
var=c
在可变大小写很重要的操作系统上,这可能是一个问题(另请参见下面的 url 大小写)
此问题已在 Git 2.13(2017 年第二季度)中得到修复,并提供了节与小节之间差异的另一个说明。
参见Junio C Hamano (gitster
) 的commit 1274a15 和commit ee98df3(2017 年 2 月 23 日)。(由 Junio C Hamano -- gitster
-- 合并到 commit 2f54451,2017 年 3 月 10 日)
config
:在git_config_parse_parameter()
中使用git_config_parse_key()
解析配置变量的一次性赋值 来自命令行历史上是相当松散的并且被允许 有什么可以通过的。
它还对变量名中的所有内容进行了小写, 甚至是一个三级的
<section>.<subsection>.<variable>
名称,其中 该部分必须以区分大小写的方式处理。
三级<section>.<subsection>.<variable>
名称的示例,无论操作系统在设置 url 时,大小写都很重要:
vonc@bvonc MINGW64 ~
$ git -c url."https://myserver/GitLab".insteadOf=git@myserver.org/GitLab config -l|grep -i Gitlab
url.https://myserver.org/gitlab.insteadof=git@myserver.org/GitLab
如果您的私有 Git 存储库服务器 URL 不是完全小写...该命令将不起作用。
而scheme of an url might be case insensitive,如well as the domain,其余的url(这里是/GitLab
部分)can be case sensitive。
【讨论】:
以上是关于gitconfig 文件中的 `[github]` 和 `[github "user"]` 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章