| `push.autoSetupRemote`:: |
| If set to `true` assume `--set-upstream` on default push when no |
| upstream tracking exists for the current branch; this option |
| takes effect with `push.default` options `simple`, `upstream`, |
| and `current`. It is useful if by default you want new branches |
| to be pushed to the default remote (like the behavior of |
| `push.default=current`) and you also want the upstream tracking |
| to be set. Workflows most likely to benefit from this option are |
| `simple` central workflows where all branches are expected to |
| have the same name on the remote. |
| |
| `push.default`:: |
| Defines the action `git push` should take if no refspec is |
| given (whether from the command-line, config, or elsewhere). |
| Different values are well-suited for |
| specific workflows; for instance, in a purely central workflow |
| (i.e. the fetch source is equal to the push destination), |
| `upstream` is probably what you want. Possible values are: |
| + |
| -- |
| `nothing`;; |
| do not push anything (error out) unless a refspec is |
| given. This is primarily meant for people who want to |
| avoid mistakes by always being explicit. |
| |
| `current`;; |
| push the current branch to update a branch with the same |
| name on the receiving end. Works in both central and non-central |
| workflows. |
| |
| `upstream`;; |
| push the current branch back to the branch whose |
| changes are usually integrated into the current branch (which is |
| called `@{upstream}`). This mode only makes sense if you are |
| pushing to the same repository you would normally pull from |
| (i.e. central workflow). |
| |
| `tracking`;; |
| this is a deprecated synonym for `upstream`. |
| |
| `simple`;; |
| push the current branch with the same name on the remote. |
| + |
| If you are working on a centralized workflow (pushing to the same repository you |
| pull from, which is typically `origin`), then you need to configure an upstream |
| branch with the same name. |
| + |
| This mode is the default since Git 2.0, and is the safest option suited for |
| beginners. |
| |
| `matching`;; |
| push all branches having the same name on both ends. |
| This makes the repository you are pushing to remember the set of |
| branches that will be pushed out (e.g. if you always push `maint` |
| and `master` there and no other branches, the repository you push |
| to will have these two branches, and your local `maint` and |
| `master` will be pushed there). |
| + |
| To use this mode effectively, you have to make sure _all_ the |
| branches you would push out are ready to be pushed out before |
| running `git push`, as the whole point of this mode is to allow you |
| to push all of the branches in one go. If you usually finish work |
| on only one branch and push out the result, while other branches are |
| unfinished, this mode is not for you. Also this mode is not |
| suitable for pushing into a shared central repository, as other |
| people may add new branches there, or update the tip of existing |
| branches outside your control. |
| + |
| This used to be the default, but not since Git 2.0 (`simple` is the |
| new default). |
| |
| -- |
| |
| `push.followTags`:: |
| If set to true, enable `--follow-tags` option by default. You |
| may override this configuration at time of push by specifying |
| `--no-follow-tags`. |
| |
| `push.gpgSign`:: |
| May be set to a boolean value, or the string `if-asked`. A true |
| value causes all pushes to be GPG signed, as if `--signed` is |
| passed to linkgit:git-push[1]. The string `if-asked` causes |
| pushes to be signed if the server supports it, as if |
| `--signed=if-asked` is passed to `git push`. A false value may |
| override a value from a lower-priority config file. An explicit |
| command-line flag always overrides this config option. |
| |
| `push.pushOption`:: |
| When no `--push-option=<option>` argument is given from the |
| command line, `git push` behaves as if each _<option>_ of |
| this variable is given as `--push-option=<option>`. |
| + |
| This is a multi-valued variable, and an empty value can be used in a |
| higher priority configuration file (e.g. `.git/config` in a |
| repository) to clear the values inherited from a lower priority |
| configuration files (e.g. `$HOME/.gitconfig`). |
| + |
| ---- |
| |
| Example: |
| |
| /etc/gitconfig |
| push.pushoption = a |
| push.pushoption = b |
| |
| ~/.gitconfig |
| push.pushoption = c |
| |
| repo/.git/config |
| push.pushoption = |
| push.pushoption = b |
| |
| This will result in only b (a and c are cleared). |
| |
| ---- |
| |
| `push.recurseSubmodules`:: |
| May be `check`, `on-demand`, `only`, or `no`, with the same behavior |
| as that of `push --recurse-submodules`. |
| If not set, `no` is used by default, unless `submodule.recurse` is |
| set (in which case a `true` value means `on-demand`). |
| |
| `push.useForceIfIncludes`:: |
| If set to `true`, it is equivalent to specifying |
| `--force-if-includes` as an option to linkgit:git-push[1] |
| in the command line. Adding `--no-force-if-includes` at the |
| time of push overrides this configuration setting. |
| |
| `push.negotiate`:: |
| If set to `true`, attempt to reduce the size of the packfile |
| sent by rounds of negotiation in which the client and the |
| server attempt to find commits in common. If `false`, Git will |
| rely solely on the server's ref advertisement to find commits |
| in common. |
| |
| `push.useBitmaps`:: |
| If set to `false`, disable use of bitmaps for `git push` even if |
| `pack.useBitmaps` is `true`, without preventing other git operations |
| from using bitmaps. Default is `true`. |