remote.<name>.push
和push.default
有什么区别?
它们都为refspec
指定默认的git push
参数吗?
如果是,它们之间的优先顺序是什么?
remote.<name>.push
是否适用于特定的远程存储库<name>
,而push.default
是否适用于所有远程存储库?
谢谢。
答案 0 :(得分:2)
您怀疑,remote.name.push
仅适用于指定的远程 name
。如果存在,它将提供默认的refspec。例如,执行以下操作:
git config remote.zorg.push refs/heads/master:refs/heads/master
表示git push zorg
等同于git push zorg refs/heads/master:refs/heads/master
。
但是,push.default
不至少不直接提供默认的refspec。可以将其设置为五个值之一:
nothing
:没有参考说明的推送是错误current
:没有引用说明的推送意味着“将当前分支推送到同名的分支” upstream
或tracking
:没有引用说明的推送意味着“将当前分支推送到其上游” simple
:类似于upstream
,但上游设置必须与分支名称匹配matching
:这是最复杂的;参见下文。请注意,tracking
已过时(改为使用upstream
)。对simple
的约束是,如果您的本地分支名为xyz
,则在远程服务器上上游分支也必须命名为xyz
。
matching
设置实际上意味着:
git ls-remote
的输出,查找refs/heads/
)。此模式是Git 2.0之前的Git版本中的默认模式,但是它很容易出错,所以现在不是。