git push.default=Current和push.default=上游之间有什么区别?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (34)

git-config的手册页列出了push.default的以下选项:

nothing - do not push anything.
matching - push all matching branches. All branches having the same name in both ends are considered to be matching. This is the default.
upstream - push the current branch to its upstream branch.
tracking - deprecated synonym for upstream.
current - push the current branch to a branch of the same name.

在大多数情况下,我会假设,推到分支的上游分支与推到同名的分支是一样的,因为上游分支通常具有相同的名称,而且由于同名分支(“Current”)通常(或者从定义上来说,始终是上游分支)。那有什么区别?

提问于
用户回答回答于

你总结了问题的不同之处。upstream推到配置上游支路,同时current假设上游分支的名称与电流本地分支,并推送到该特定名称。实际上,没有理由假定本地分支的上游跟踪分支与本地分支本身的名称相同。

一个更实用的例子可能是跟踪两个developmentproduction储存库。你的工作流可能对每个分支使用不同的主线分支,但这可能会引起混淆。假设你是代码集成者,并且希望跟踪这两个存储库的master分叉。

git checkout -b production --track production/master
git checkout -b development --track development/master

现在有两个分支跟踪各自的存储库,这两个分支都没有使用master命名约定。对于分支名称几乎没有什么混淆:它们明确地描述了它们跟踪的内容。尽管如此,push.default = current没有任何意义,因为两个都不包含developmentproduction分支。

用户回答回答于

current将当前分支推送到远程回购中同名的分支。

upstream将当前分支推到上游分支。

上游分支是一个分支,它被明确或隐含地定义为从当前分支的上游。这意味着,默认情况下,推拉将与此分支同步。上游分支可能与当前分支本身处于相同的回购中。你可以做一些有趣的事情,比如设置你的局部主支行作为您的上游局部特征(主题)分支,并在它们之间推拉。

隐式上游设置是通过branch.autosetupmerge配置值。可以在git config帮助页。显式上游设置使用-u选项的git branch命令。

扫码关注云+社区