| 1 | `branch.autoSetupMerge`:: |
| 2 | Tells `git branch`, `git switch` and `git checkout` to set up new branches |
| 3 | so that linkgit:git-pull[1] will appropriately merge from the |
| 4 | starting point branch. Note that even if this option is not set, |
| 5 | this behavior can be chosen per-branch using the `--track` |
| 6 | and `--no-track` options. This option defaults to `true`. The valid settings |
| 7 | are: |
| 8 | `false`;; no automatic setup is done |
| 9 | `true`;; automatic setup is done when the starting point is a remote-tracking branch |
| 10 | `always`;; automatic setup is done when the starting point is either a |
| 11 | local branch or remote-tracking branch |
| 12 | `inherit`;; if the starting point has a tracking configuration, it is copied to the new |
| 13 | branch |
| 14 | `simple`;; automatic setup is done only when the starting point |
| 15 | is a remote-tracking branch and the new branch has the same name as the |
| 16 | remote branch. |
| 17 | |
| 18 | `branch.autoSetupRebase`:: |
| 19 | When a new branch is created with `git branch`, `git switch` or `git checkout` |
| 20 | that tracks another branch, this variable tells Git to set |
| 21 | up pull to rebase instead of merge (see `branch.<name>.rebase`). |
| 22 | The valid settings are: |
| 23 | `never`;; rebase is never automatically set to true. |
| 24 | `local`;; rebase is set to true for tracked branches of other local branches. |
| 25 | `remote`;; rebase is set to true for tracked branches of remote-tracking branches. |
| 26 | `always`;; rebase will be set to true for all tracking branches. |
| 27 | |
| 28 | + |
| 29 | See `branch.autoSetupMerge` for details on how to set up a branch to track another branch. |
| 30 | This option defaults to `never`. |
| 31 | |
| 32 | `branch.sort`:: |
| 33 | This variable controls the sort ordering of branches when displayed by |
| 34 | linkgit:git-branch[1]. Without the `--sort=<value>` option provided, the |
| 35 | value of this variable will be used as the default. |
| 36 | See linkgit:git-for-each-ref[1] field names for valid values. |
| 37 | |
| 38 | `branch.<name>.remote`:: |
| 39 | When on branch _<name>_, it tells `git fetch` and `git push` |
| 40 | which remote to fetch from or push to. The remote to push to |
| 41 | may be overridden with `remote.pushDefault` (for all branches). |
| 42 | The remote to push to, for the current branch, may be further |
| 43 | overridden by `branch.<name>.pushRemote`. If no remote is |
| 44 | configured, or if you are not on any branch and there is more than |
| 45 | one remote defined in the repository, it defaults to `origin` for |
| 46 | fetching and `remote.pushDefault` for pushing. |
| 47 | Additionally, `.` (a period) is the current local repository |
| 48 | (a dot-repository), see `branch.<name>.merge`'s final note below. |
| 49 | |
| 50 | `branch.<name>.pushRemote`:: |
| 51 | When on branch _<name>_, it overrides `branch.<name>.remote` for |
| 52 | pushing. It also overrides `remote.pushDefault` for pushing |
| 53 | from branch _<name>_. When you pull from one place (e.g. your |
| 54 | upstream) and push to another place (e.g. your own publishing |
| 55 | repository), you would want to set `remote.pushDefault` to |
| 56 | specify the remote to push to for all branches, and use this |
| 57 | option to override it for a specific branch. |
| 58 | The value may be the name of a configured remote or a repository URL. |
| 59 | |
| 60 | `branch.<name>.merge`:: |
| 61 | Defines, together with `branch.<name>.remote`, the upstream branch |
| 62 | for the given branch. It tells `git fetch`/`git pull`/`git rebase` which |
| 63 | branch to merge and can also affect `git push` (see `push.default`). |
| 64 | When in branch _<name>_, it tells `git fetch` the default |
| 65 | refspec to be marked for merging in `FETCH_HEAD`. The value is |
| 66 | handled like the remote part of a refspec, and must match a |
| 67 | ref which is fetched from the remote given by |
| 68 | `branch.<name>.remote`. |
| 69 | The merge information is used by `git pull` (which first calls |
| 70 | `git fetch`) to lookup the default branch for merging. Without |
| 71 | this option, `git pull` defaults to merge the first refspec fetched. |
| 72 | Specify multiple values to get an octopus merge. |
| 73 | If you wish to setup `git pull` so that it merges into _<name>_ from |
| 74 | another branch in the local repository, you can point |
| 75 | `branch.<name>.merge` to the desired branch, and use the relative path |
| 76 | setting `.` (a period) for `branch.<name>.remote`. |
| 77 | |
| 78 | `branch.<name>.mergeOptions`:: |
| 79 | Sets default options for merging into branch _<name>_. The syntax and |
| 80 | supported options are the same as those of linkgit:git-merge[1], but |
| 81 | option values containing whitespace characters are currently not |
| 82 | supported. |
| 83 | |
| 84 | `branch.<name>.rebase`:: |
| 85 | When true, rebase the branch _<name>_ on top of the fetched branch, |
| 86 | instead of merging the default branch from the default remote when |
| 87 | `git pull` is run. See `pull.rebase` for doing this in a non |
| 88 | branch-specific manner. |
| 89 | + |
| 90 | When `merges` (or just `m`), pass the `--rebase-merges` option to `git rebase` |
| 91 | so that the local merge commits are included in the rebase (see |
| 92 | linkgit:git-rebase[1] for details). |
| 93 | + |
| 94 | When the value is `interactive` (or just `i`), the rebase is run in interactive |
| 95 | mode. |
| 96 | + |
| 97 | *NOTE*: this is a possibly dangerous operation; do *not* use |
| 98 | it unless you understand the implications (see linkgit:git-rebase[1] |
| 99 | for details). |
| 100 | |
| 101 | `branch.<name>.description`:: |
| 102 | Branch description, can be edited with |
| 103 | `git branch --edit-description`. Branch description is |
| 104 | automatically added to the `format-patch` cover letter or |
| 105 | `request-pull` summary. |