git config:“remote.origin.push”vs“push.default”

时间:2013-10-21 20:56:20

标签: git

以下命令如何:

git config remote.origin.push refs/heads/master:refs/heads/master

与以下命令相关:

git config push.default <option>

(使用--local--global选项)

<option>之一是:

nothing
matching
upstream (formerly tracking)
current
simple

我想我理解第二个配置命令,但我不明白第一个命令条件/与第二个命令的关系。以下是一些提供此问题背后的背景的参考资料:

1 个答案:

答案 0 :(得分:6)

当你跑步时:

git push origin ...

remote.origin.push中设置的任何内容都会覆盖push.default中设置的内容。更一般地说,如果未设置remote.name.push(此处 name origin),git会回退到push.default,如果这也是...没有设置,它会回落到链接中描述的内置默认值。

编辑,如Breaking Benjamin's comment below中所述及我对其的回复,如果 一个remote.origin.push部分,其中包含至少一个refspec ,refspec会覆盖remote.origin.push。所以origin仅在命令行上显式或隐式地命名git push并且在命令行上省略任何和所有refspec时适用例如,origin没有发现git push origin的参数,或remote.origin.push没有其他参数,Git会查找您的git push origin xyz设置并使用它;但是{ {1}} 没有使用您的remote.origin.push设置。当然上面的...部分可以包含更多标记,因此此时正确的问题是{{1} part包含任何refspec。)

请注意:

...

与没有git config --local na.me value 的意思相同。设置值(如此处)时,--local--local--global选项控制值的设置位置,但--file filename是默认值。

(取值时:

--local

[或git config na.me git config --getgit config --get-all],git config --get-regexp等选项会限制git从中读取的内容,如果没有,则会从读取所有,如果在多个地方设置了某些内容,则“最本地”覆盖“较少本地”。)