`branch.autoSetupMerge`:: Tells `git branch`, `git switch` and `git checkout` to set up new branches so that linkgit:git-pull[1] will appropriately merge from the starting point branch. Note that even if this option is not set, this behavior can be chosen per-branch using the `--track` and `--no-track` options. This option defaults to `true`. The valid settings are: `false`;; no automatic setup is done `true`;; automatic setup is done when the starting point is a remote-tracking branch `always`;; automatic setup is done when the starting point is either a local branch or remote-tracking branch `inherit`;; if the starting point has a tracking configuration, it is copied to the new branch `simple`;; automatic setup is done only when the starting point is a remote-tracking branch and the new branch has the same name as the remote branch. `branch.autoSetupRebase`:: When a new branch is created with `git branch`, `git switch` or `git checkout` that tracks another branch, this variable tells Git to set up pull to rebase instead of merge (see `branch..rebase`). The valid settings are: `never`;; rebase is never automatically set to true. `local`;; rebase is set to true for tracked branches of other local branches. `remote`;; rebase is set to true for tracked branches of remote-tracking branches. `always`;; rebase will be set to true for all tracking branches. + See `branch.autoSetupMerge` for details on how to set up a branch to track another branch. This option defaults to `never`. `branch.sort`:: This variable controls the sort ordering of branches when displayed by linkgit:git-branch[1]. Without the `--sort=` option provided, the value of this variable will be used as the default. See linkgit:git-for-each-ref[1] field names for valid values. `branch..remote`:: When on branch __, it tells `git fetch` and `git push` which remote to fetch from or push to. The remote to push to may be overridden with `remote.pushDefault` (for all branches). The remote to push to, for the current branch, may be further overridden by `branch..pushRemote`. If no remote is configured, or if you are not on any branch and there is more than one remote defined in the repository, it defaults to `origin` for fetching and `remote.pushDefault` for pushing. Additionally, `.` (a period) is the current local repository (a dot-repository), see `branch..merge`'s final note below. `branch..pushRemote`:: When on branch __, it overrides `branch..remote` for pushing. It also overrides `remote.pushDefault` for pushing from branch __. When you pull from one place (e.g. your upstream) and push to another place (e.g. your own publishing repository), you would want to set `remote.pushDefault` to specify the remote to push to for all branches, and use this option to override it for a specific branch. `branch..merge`:: Defines, together with `branch..remote`, the upstream branch for the given branch. It tells `git fetch`/`git pull`/`git rebase` which branch to merge and can also affect `git push` (see `push.default`). When in branch __, it tells `git fetch` the default refspec to be marked for merging in `FETCH_HEAD`. The value is handled like the remote part of a refspec, and must match a ref which is fetched from the remote given by `branch..remote`. The merge information is used by `git pull` (which first calls `git fetch`) to lookup the default branch for merging. Without this option, `git pull` defaults to merge the first refspec fetched. Specify multiple values to get an octopus merge. If you wish to setup `git pull` so that it merges into __ from another branch in the local repository, you can point `branch..merge` to the desired branch, and use the relative path setting `.` (a period) for `branch..remote`. `branch..mergeOptions`:: Sets default options for merging into branch __. The syntax and supported options are the same as those of linkgit:git-merge[1], but option values containing whitespace characters are currently not supported. `branch..rebase`:: When true, rebase the branch __ on top of the fetched branch, instead of merging the default branch from the default remote when `git pull` is run. See `pull.rebase` for doing this in a non branch-specific manner. + When `merges` (or just `m`), pass the `--rebase-merges` option to `git rebase` so that the local merge commits are included in the rebase (see linkgit:git-rebase[1] for details). + When the value is `interactive` (or just `i`), the rebase is run in interactive mode. + *NOTE*: this is a possibly dangerous operation; do *not* use it unless you understand the implications (see linkgit:git-rebase[1] for details). `branch..description`:: Branch description, can be edited with `git branch --edit-description`. Branch description is automatically added to the `format-patch` cover letter or `request-pull` summary.