我在我的本地功能分支foo工作。然后我想把这个新分支推向原点,以便其他人可以继续工作。通常的做法是:
git push origin foo:foo
我最终做了,它完全按预期工作,推高了61个对象。在这样做之前,我一直想着:
git push origin
想想也许它会默认根据我本地分支的名称创建一个新的远程分支。输出是正常推送输出,只有13个对象被推高。结果是不可思议的。在获取之后,没有任何新东西出现在其他开发者或我的本地回购中。
那么当我做git push origin
时,git认为我告诉它做什么,以及它对我的远程仓库有什么影响?
答案 0 :(得分:12)
这取决于你的git版本。在旧版本中,它会尝试推动也存在于远端的每个本地分支。从版本1.6.3开始,行为由push.default
配置选项控制。
值为:
matching
:[默认]推送具有相同本地和远程名称的所有分支nothing
:什么都不推tracking
:只会在跟踪远端分支时推送当前分支current
:将推送当前分支答案 1 :(得分:3)
2012年6月:[ANNOUNCE] Git 1.7.11.rc1
push
的新模式,“simple
”,这是“current
”与“upstream
之间的交叉“,已经推出。
“git push
”没有任何refspec将将当前分支推送到远程存储库中的相同名称,只有当它被设置为跟踪那里具有相同名称的分支时。
计划是在未配置push.default时使此模式成为新的默认值。
2012年3月:注意:默认的“匹配”政策可能会很快改变 (Git1.7.10 +之后的某个时间):
请参阅“Please discuss: what "git push" should do when you do not say what to push?”
在当前设置(即
push.default=matching
)中,没有参数的git push
将推送本地和远程存在的所有分支同名。
这通常适用于开发人员推送到自己的公共存储库时,但在使用共享存储库时可能会造成混淆。建议将默认设置更改为“
upstream
”,即仅推送当前分支,然后将其推送到分支git pull将从中拉出。
另一位候选人是“current
”;这会将当前分支仅推送到同名的远程分支。到目前为止所讨论的内容可以在这个帖子中看到:
http://thread.gmane.org/gmane.comp.version-control.git/192547/focus=192694
以前的相关讨论包括:
要加入讨论,请将您的消息发送至:git@vger.kernel.org