在Git-config中,您可以看到:
简单 - 在集中式工作流程中,像上游一样添加工作 如果上游分支的名称不同,则拒绝推送的安全性 来自当地的。当推到与遥控器不同的遥控器时 通常来自,作为当前工作。
所以Git
必须决定工作方式upstream
或current
。但Git
如何检测工作流程类型?如果理解我们想要与Git
存储库进行通信,centralized
是否认为工作流是bare
?
答案 0 :(得分:5)
您链接的同一文档中的upstream
说明为您提供了问题的答案。
如果您要推送到通常从中拉出的相同存储库(即中央工作流程),此模式才有意义。
因此,在此上下文中,“中央工作流程”定义为“无论您是使用rebase还是合并,都可以推送到同一个仓库,从而获得最新的上游更改”。 (pull = fetch + merge或fetch + rebase,具体取决于配置和参数)
无论您是否拥有“中央工作流程”,在这种情况下,每次推送呼叫都可能不同。如果您要为您的本地分支设置远程跟踪分支(上游分支),那么此跟踪分支是您通常从中获取更新的地方(它是您跟踪的分支),因此如果您执行rebase或合并(或拉当然,因为它是fetch + merge或fetch + pull)而没有指定要重组的内容或要合并的内容,然后使用远程跟踪分支。
现在,如果你推,Git知道你是否推送到你设置为跟踪分支的同一个遥控器的同一分支,以便推送你的本地分支。如果匹配,则在此上下文中定义为“中央工作流”,如果没有,则使用upstream
或者如果没有设置跟踪分支(也是“不”),{{1}使用。
区别在于:
当前:
current
跟踪远程分支foo
:
bar/baz
。 foo
跟踪远程分支foo
:
bar/foo
。 foo
不会跟踪任何远程分支:
foo
。上游:
foo
跟踪远程分支foo
:
bar/baz
时,如果您没有另外说明,则推送到分支bar
。 baz
跟踪远程分支foo
:
bar/foo
时,如果您没有另外说明,则推送到分支bar
。 foo
不会跟踪任何远程分支:
简单:
foo
跟踪远程分支foo
:
bar/baz
时,您会收到一条错误消息,告诉您在名称不匹配时明确推送bar
。foo
跟踪远程分支foo
:
bar/foo
。 foo
不会跟踪任何远程分支: