`git push origin'的结果是什么?

时间:2011-01-03 17:26:28

标签: git

我在我的本地功能分支foo工作。然后我想把这个新分支推向原点,以便其他人可以继续工作。通常的做法是:

git push origin foo:foo

我最终做了,它完全按预期工作,推高了61个对象。在这样做之前,我一直想着:

git push origin

想想也许它会默认根据我本地分支的名称创建一个新的远程分支。输出是正常推送输出,只有13个对象被推高。结果是不可思议的。在获取之后,没有任何新东西出现在其他开发者或我的本地回购中。

那么当我做git push origin时,git认为我告诉它做什么,以及它对我的远程仓库有什么影响?

2 个答案:

答案 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