autosetuprebase vs autosetupmerge
What is counterintuitive here is the naming of these preferences. They do look like they refer to the same functionality, but in fact they don't:
-
autosetupmerge
controls whethergit branch
andgit checkout -b
imply the--track
option, i.e. with your setting ofalways
,-
git checkout branchname
, ifbranchname
exists on a remote but not locally, will createbranchname
tracking its remote counterpart -
git checkout -b newbranch
will create a new branchnewbranch
tracking whichever branch you had checked out before issuing this command
-
-
autosetuprebase
controls whether new branches should be set up to be rebased upongit pull
, i.e. your setting ofalways
will result in branches being set up such thatgit pull
always performs a rebase, not a merge. (Be aware that existing branches retain their configuration when you change this option.)
So it makes perfect sense to have both autosetupmerge = always
and autosetuprebase = always
; in fact, that's also what I have.
since this is the first hit, if you search for "autosetuprebase" with google, here an advice:
git config --global branch.autosetuprebase always
Source https://mislav.net/2010/07/git-tips/
It's probably worth mentioning that there is a difference between autosetupmerge=always (in your config) and autosetupmerge=true (the default).
true will only setup merging for remote branches. always will include local branches as well.
You probably want true.
As I was looking for other possible options of "autosetuprebase" and it took some time to find them, here they are:
branch.autosetuprebase
When a new branch is created with git branch
or git checkout
that tracks another branch, this variable tells Git to set up pull to rebase instead of merge (see "branch..rebase").
- When
never
, rebase is never automatically set to true. - When
local
, rebase is set to true for tracked branches of other local branches. - When
remote
, rebase is set to true for tracked branches of remote-tracking branches. - When
always
, rebase will be set to true for all tracking branches.
Source: http://git-scm.com/docs/git-config.html