I create a new branch in Git:
git branch my_branch
Push it:
git push origin my_branch
Now say someone made some changes on the server and I want to pull from origin/my_branch
. I do:
git pull
But I get:
You asked me to pull without telling me which branch you
want to merge with, and 'branch.my_branch.merge' in
your configuration file does not tell me, either. Please
specify which branch you want to use on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details.
If you often merge with the same branch, you may want to
use something like the following in your configuration file:
[branch "my_branch"]
remote = <nickname>
merge = <remote-ref>
[remote "<nickname>"]
url = <url>
fetch = <refspec>
See git-config(1) for details.
I learned that I can make it work with:
git branch --set-upstream my_branch origin/my_branch
But why do I need to do this for every branch I create? Isn't it obvious that if I push my_branch
into origin/my_branch
, then I would want to pull origin/my_branch
into my_branch
? How can I make this the default behavior?
branch.autosetupmerge
means that the upstream configuration for a new branch is only automatically set when creating a branch from a remote-tracking branch (e.g.<remote-name>/<branch-name>
) (see git-config(1)). You are probably creating your branches from existing local branches. If you are effectively branching directly from the tip of a remote branch (despite being on a local branch), then you can usegit branch my_branch <remote-name>/<branch-name>
to automatically setup the upstream configuration.--set-upstream
option is deprecated. You should use--track
or--set-upstream-to
instead.--set-upstream
is deprecated, then perhaps the git devs should remove it from the help message that gets displayed when you rungit push
with no options and no upstream is set?git branch --set-upstream
is deprecated.git push --set-upstream
is not.