Default behavior of "git push" without a branch specified

I use the following command to push to my remote branch:

git push origin sandbox

If I say

git push origin

does that push changes in my other branches too, or does it only update my current branch? I have three branches: master , production and sandbox .

The git push documentation is not very clear about this, so I'd like to clarify this for good.

Which branches and remotes do the following git push commands update exactly?

git push 
git push origin

origin above is a remote.

I understand that git push [remote] [branch] will push only that branch to the remote.


You can control the default behavior by setting push.default in your git config. From the git-config(1) documentation:

push.default

Defines the action git push should take if no refspec is given on the command line, no refspec is configured in the remote, and no refspec is implied by any of the options given on the command line. Possible values are:

  • nothing : do not push anything

  • matching : push all matching branches

    All branches having the same name in both ends are considered to be matching.

    This is the default in Git 1.x.

  • upstream : push the current branch to its upstream branch ( tracking is a deprecated synonym for upstream)

  • current : push the current branch to a branch of the same name

  • simple : (new in Git 1.7.11) like upstream, but refuses to push if the upstream branch's name is different from the local one

    This is the safest option and is well-suited for beginners.

    This will become the default in Git 2.0.

  • The simple, current and upstream modes are for those who want to push out a single branch after finishing work, even when the other branches are not yet ready to be pushed out

    Command line examples:

    To view the current configuration:

    git config --global push.default
    

    To set a new configuration:

    git config --global push.default current
    

    git push origin will push all changes on the local branches that have matching remote branches at origin As for git push

    Works like git push <remote> , where <remote> is the current branch's remote (or origin, if no remote is configured for the current branch).

    From the Examples section of the git-push man page


    You can set up default behavior for your git with push.default

    git config push.default current
    

    or if you have many repositories and want the same for all then

    git config --global push.default current
    

    The current in this setup means that by default you will only push the current branch when you do git push

    Other options are:

  • nothing : Do not push anything
  • matching : Push all matching branches (default)
  • tracking : Push the current branch to whatever it is tracking
  • current : Push the current branch

  • UPDATE - NEW WAY TO DO THIS

    As of Git 1.7.11 do the following:

    git config --global push.default simple
    

    This is a new setting introduced that works in the same way as current, and will be made default to git from v 2.0 according to rumors

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

    上一篇: Git:什么是悬挂提交/ blob,它们来自哪里?

    下一篇: 没有指定分支的“git push”的默认行为