2

@{upstream}Git 分支和新分支有什么区别@{push}

据我了解,它@{upstream}是分支的上游跟踪参考,并且@{push}push将推送到的参考。依我的直觉,这些是一回事。检查几个方便的分支git rev-parse @{upstream}与 , 相同git rev-parse @{push}(我认为可能不会以相同的方式解决)git rev-parse --abbrev-ref @{upstream}git rev-parse --abbrev-ref @{push}.

4

1 回答 1

4

@{upstream}并且 @{push}确实指向同一件事……当他们这样做时

撇开玩笑不谈,我的意思是这只是巧合,这是两个配置条目指向同一个遥控器的结果,但它们可能不同。

这个页面上有一个很好的例子。

具体来说,这部分:

@{push}如果在检出分支名称时运行 git push,则后缀报告“我们将推送到的分支”(HEAD如果未指定分支名称,则为当前分支)。由于我们的推送目标在远程存储库中,当然,我们报告与该分支对应的本地跟踪分支(即 中的某些内容refs/remotes/)。

$ git config push.default current
$ git config remote.pushdefault myfork
$ git switch -c mybranch origin/master

$ git rev-parse --symbolic-full-name @{upstream}
refs/remotes/origin/master

$ git rev-parse --symbolic-full-name @{push}
refs/remotes/myfork/mybranch

请注意,在示例中,我们设置了一个三角工作流,我们从一个位置拉取并推送到另一个位置。在非三角工作流中,@{push}与 相同@{upstream},不需要它。

于 2020-01-29T15:51:13.487 回答