8a649be7e8
With "push.default=current" configured, a simple "git push" will push to the same-name branch on the current branch's branch.<name>.pushRemote, or remote.pushDefault, or origin. If none of these are defined, the push will fail with error "fatal: No configured push destination". The same "default to origin if no config" behavior applies with "push.default=matching". Other commands use "origin" as a default when there are multiple options, but default to the single remote when there is only one - for example, "git checkout <something>". This "assume the single remote if there is only one" behavior is more friendly/useful than a defaulting behavior that only uses the name "origin" no matter what. Update "git push" to also default to the single remote (and finally fall back to "origin" as default if there are several), for "push.default=current" and for other current and future remote-defaulting push behaviors. This change also modifies the behavior of ls-remote in a consistent way, so defaulting not only supplies 'origin', but any single configured remote also. Document the change in behavior, correct incorrect assumptions in related tests, and add test cases reflecting this new single-remote-defaulting behavior. Signed-off-by: Tao Klerks <tao@klerks.biz> Signed-off-by: Junio C Hamano <gitster@pobox.com>
104 lines
4.9 KiB
Plaintext
104 lines
4.9 KiB
Plaintext
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. 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. This option defaults to true.
|
|
|
|
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.<name>.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.
|
|
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=<value>" 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.<name>.remote::
|
|
When on branch <name>, it tells 'git fetch' and 'git push'
|
|
which remote to fetch from/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.<name>.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.<name>.merge`'s final note below.
|
|
|
|
branch.<name>.pushRemote::
|
|
When on branch <name>, it overrides `branch.<name>.remote` for
|
|
pushing. It also overrides `remote.pushDefault` for pushing
|
|
from branch <name>. 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.<name>.merge::
|
|
Defines, together with branch.<name>.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 <name>, 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.<name>.remote".
|
|
The merge information is used by 'git pull' (which at 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 <name> from
|
|
another branch in the local repository, you can point
|
|
branch.<name>.merge to the desired branch, and use the relative path
|
|
setting `.` (a period) for branch.<name>.remote.
|
|
|
|
branch.<name>.mergeOptions::
|
|
Sets default options for merging into branch <name>. 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.<name>.rebase::
|
|
When true, rebase the branch <name> 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.<name>.description::
|
|
Branch description, can be edited with
|
|
`git branch --edit-description`. Branch description is
|
|
automatically added in the format-patch cover letter or
|
|
request-pull summary.
|