Default behavior of "git push" without a branch specified
Solution 1:
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
: (default before Git 2.0) push all matching branchesAll branches having the same name in both ends are considered to be matching.
-
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, default since Git 2.0) like upstream, but refuses to push if the upstream branch's name is different from the local oneThis is the safest option and is well-suited for beginners.
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
Solution 2:
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
Solution 3:
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