git推送2个遥控器的意外行为

git推送2个遥控器的意外行为,git,Git,我有以下设置: 遥控器: 起源,维杰 本地分行: 主人 14.4_-dev(通过git签出源代码/14.4_-dev-B14.4_-dev创建) 14.4_各种_功能(通过签出vijay创建/14.4_各种_功能-b 14.4_各种_功能) 当我使用14.4_各种功能分支并执行git push时,它会将我的本地分支(如master和14.4_dev)推送到vijay remote。这是预期的行为吗?是。请参阅有关仅运行git push时如何更改行为的说明: 推送。默认值 定义在没有明确给出r

我有以下设置:

遥控器:

起源,维杰

本地分行:

  • 主人
  • 14.4_-dev(通过git签出源代码/14.4_-dev-B14.4_-dev创建)
  • 14.4_各种_功能(通过签出vijay创建/14.4_各种_功能-b 14.4_各种_功能)
当我使用14.4_各种功能分支并执行git push时,它会将我的本地分支(如master和14.4_dev)推送到vijay remote。这是预期的行为吗?

是。请参阅有关仅运行git push时如何更改行为的说明:

推送。默认值

定义在没有明确给出refspec的情况下,git push应采取的操作
。不同的值非常适合特定的工作流;例如,在一个纯粹的中心工作流中(即获取源等于推送目标),上游可能是您想要的。可能的值为:

  • nothing
    -除非明确给出了refspec,否则不要推送任何内容(错误)。这主要是针对那些希望通过总是直言不讳来避免错误的人

  • current
    -推动当前分支以更新接收端上具有相同名称的分支。适用于中心和非中心工作流

  • 上游
    -将当前分支推回到其更改通常集成到当前分支中的分支(称为@{upstream})。只有当您推送到通常从中提取的同一存储库(即中心工作流)时,此模式才有意义

  • simple
    -在集中式工作流中,如果上游分支机构的名称与本地分支机构的名称不同,则可以像上游分支机构一样工作,增加安全性,拒绝推送

    当按下一个不同于您通常从中拔出的遥控器的遥控器时,以电流的方式工作。这是最安全的选择,适合初学者

  • 匹配
    -在两端推送具有相同名称的所有分支。这会使您正在推送的存储库记住将被推送出去的分支集(例如,如果您总是在那里推送maint和master,而没有其他分支,那么您推送到的存储库将有这两个分支,而您的本地maint和master将被推送到那里)

    为了有效地使用此模式,您必须确保在运行git push之前,您要推出的所有分支都已准备好推出,因为此模式的全部要点是允许您一次性推出所有分支。如果通常只在一个分支上完成工作并推出结果,而其他分支未完成,则此模式不适合您。此外,此模式不适合推入共享中心存储库,因为其他人可能会在其中添加新分支,或更新您无法控制的现有分支的提示


很可能当前设置为
匹配
,而您更喜欢
简单
或上游`。

.git/config
文件中,您可以选择哪个是每个分支的默认远程。在这一点上,它可能会说

[branch "master"]
        remote = vijay
        merge = refs/heads/master
[branch "14.4_various_features"]
        remote = vijay
        merge = refs/heads/14.4_various_features
[branch "14.4_dev"]
        remote = origin
        merge = refs/heads/14.4_dev
根据您的全球git推送策略,推送可能会实现您所描述的功能。除非您的策略设置为“当前”,否则git将在您的分支上进行迭代,并将它们中的每一个推送到各自远程中的匹配分支

还有推git

这意味着“未给出参考规范”。
在这一点上,对于Git2.26(2020年第1季度),请注意明确删除了“
”术语

参见(2020年1月29日)作者。
(由年合并,2020年2月12日)

:从push.default说明中删除“显式给定” 签字人:杰夫·金

push.default
的文档提到,如果没有“明确给出”refspec,则使用它。
让我们在这里放弃“显式”的概念,因为它是模糊的,只要提到任何地方的任何refspec都足以覆盖它

我也从下面“无”值的定义中删除了“显式给定”的内容。这与我们的澄清非常接近,很明显我们在这里指的是同一类型的“给定”

作为:

我不确定故意设置
remote.*.push
配置的行为不应被视为用户对Git的明确请求

紧接着上述内容,将读取其中一个可能值的说明:

  • nothing
    -除非明确给出了refspec,否则不要推出任何内容(错误)。
    这主要是针对那些希望通过总是直言不讳来避免错误的人
这可能需要调整以保持整体连贯。
如果我们决定说设置配置不算显式, 然后,应将“除非明确给出参考规范”更新为 匹配。
可能还有其他提到的“显式”需要调整(我没有搜索它,但上面的一个是相邻的,我看不到)

如果我们必须更改描述中的任何内容,我会说我们可以直接删除“显式”。
有多种方法可以从命令行
remote.*.git/remotes
文件等中推送
configuration来提供refspec
如果是“如果您从命令行提供refspec,则会发生X,但提供配置源refspec不会导致X发生”,这可能是发明和使用本段中未使用的新短语“隐式提供”的一个很好的理由。
但是,
push.default
只有在这些方法都不用于提供任何refspec时才起作用,因此我认为,在讨论此功能时,命令行源refspec和配置源refspec之间没有太大区别


谢谢你。它确实是匹配的。我不介意