没有指定分支的“git push”的默认行为

我使用以下命令推送到我的远程分支:

git push origin sandbox

如果我说

git push origin

它是否也推动了我其他分支的变化,还是只更新了我目前的分支? 我有三个分支: masterproductionsandbox

git push文档对此不太清楚,所以我想澄清这一点。

哪些分支和遥控器可以完成以下git push命令的更新?

git push 
git push origin

上面的origin是一个遥远的。

我明白, git push [remote] [branch]将只将该分支推送到远程。


您可以通过在git config中设置push.default来控制默认行为。 从git-config(1)文档中:

push.default

定义如果在命令行上没有给出refspec,远程没有配置refspec,并且在命令行上给出的任何选项都没有暗示refspec,那么git push应该采取的行动。 可能的值是:

  • nothing :不要推动任何东西

  • matching :推送所有匹配的分支

    所有在两端具有相同名称的分支都被认为是匹配的。

    这是Git 1.x中的默认值。

  • upstream :将当前分支推送到其上游分支( tracking是上游的废弃同义词)

  • current :将当前分支推送到同名分支

  • simple :(像Git 1.7.11一样新增)像上游一样,但如果上游分支的名字与本地名称不同,则拒绝推送

    这是最安全的选择,非常适合初学者。

    这将成为Git 2.0中的默认设置。

  • 简单的,当前的和上游的模式适用于那些在完成工作后想要推出一个分支的人,即使其他分支尚未准备好推出

    命令行示例:

    查看当前配置:

    git config --global push.default
    

    要设置新配置:

    git config --global push.default current
    

    git push origin会推送在origin具有匹配远程分支的本地分支上的所有改变至于git push

    git push <remote> ,其中<remote>是当前分支的远程(或者源,如果没有为当前分支配置远程)。

    git-push手册页的Examples部分


    您可以使用push.default为git设置默认行为

    git config push.default current
    

    或者如果你有很多存储库,并且希望所有的存储库都一样

    git config --global push.default current
    

    此设置中的电流意味着默认情况下, 只有在执行git push才会推送当前分支

    其他选项是:

  • 没有:不要推动任何东西
  • 匹配:推送所有匹配分支(默认)
  • 跟踪:将当前分支推送到正在跟踪的任何分支
  • 当前:推送当前分支

  • 更新 - 新的方式来做到这一点

    从Git 1.7.11开始,请执行以下操作:

    git config --global push.default simple
    

    这是一个引入的新设置,与当前的方式相同,根据传闻将默认为从v 2.0开始git。

    链接地址: http://www.djcxy.com/p/25263.html

    上一篇: Default behavior of "git push" without a branch specified

    下一篇: Git: Howto move changes since last commit to a new branch