"远程"有什么区别。.push"<name>和"push.default"?

  • 本文关键字:push name default 远程 区别 git
  • 更新时间 :
  • 英文 :


remote.<name>.pushpush.default之间有什么区别?

它们是否都将默认的refspec参数指定为git push

如果是,它们之间的优先顺序是什么?

remote.<name>.push是否适用于特定的远程存储库<name>,而push.default是否适用于所有远程存储库?

正如您所怀疑的,remote.name.push仅适用于指定的远程name。如果存在,则提供默认的refspec。例如,做:

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

意味着CCD_ 10等同于CCD_。

然而,push.default并没有提供默认的refspec,至少不是直接提供。它可以设置为五个值之一:

  • nothing:没有refspec的推送是一个错误
  • current:没有refspecs的推送意味着"将当前分支推送到同名分支">
  • upstreamtracking:没有refspec的推送意味着"将当前分支推送到其上游">
  • simple:与upstream类似,但上游设置必须与分支名称匹配
  • matching:这是最复杂的;请参见下文

请注意,tracking已弃用(请改用upstream)。simple的约束条件是,如果本地分支的名称为xyz,则远程上的上游分支也必须命名为xyz

matching设置实际上意味着:

  • 从远程获取所有分支名称的列表(请参阅git ls-remote输出,查找refs/heads/)
  • 对于每个这样的分支名称,如果您也有一个同名的分支,请将其添加到列表中。如果没有,请忽略它
  • 使用所有生成的名称对作为refspec

这个模式在Git2.0之前的Git版本中是默认的,但它很容易出错,所以现在不是了。

最新更新