Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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.

like image 894
Debajit Avatar asked Jun 04 '09 02:06

Debajit


People also ask

What does git push do by default?

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.

Does git push automatically push to current branch?

By default, git push only updates the corresponding branch on the remote. So, if you are checked out to the main branch when you execute git push , then only the main branch will be updated. It's always a good idea to use git status to see what branch you are on before pushing to the remote.

Does git push affect all branches?

No, git push only pushes commits from current local branch to remote branch that you specified in command.

Does git push automatically push to master?

Now, just typing git push on the master branch will automatically push to origin/master .


1 Answers

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 branches

    All 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 one

    This 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 
like image 185
16 revs, 12 users 31% Avatar answered Oct 10 '22 09:10

16 revs, 12 users 31%