diff options
Diffstat (limited to 'Documentation/merge-options.adoc')
-rw-r--r-- | Documentation/merge-options.adoc | 213 |
1 files changed, 213 insertions, 0 deletions
diff --git a/Documentation/merge-options.adoc b/Documentation/merge-options.adoc new file mode 100644 index 0000000000..95ef491be1 --- /dev/null +++ b/Documentation/merge-options.adoc @@ -0,0 +1,213 @@ +`--commit`:: +`--no-commit`:: + Perform the merge and commit the result. This option can + be used to override `--no-commit`. +ifdef::git-pull[] + Only useful when merging. +endif::git-pull[] ++ +With `--no-commit` perform the merge and stop just before creating +a merge commit, to give the user a chance to inspect and further +tweak the merge result before committing. ++ +Note that fast-forward updates do not create a merge commit and +therefore there is no way to stop those merges with `--no-commit`. +Thus, if you want to ensure your branch is not changed or updated +by the merge command, use `--no-ff` with `--no-commit`. + +`--edit`:: +`-e`:: +`--no-edit`:: + Invoke an editor before committing successful mechanical merge to + further edit the auto-generated merge message, so that the user + can explain and justify the merge. The `--no-edit` option can be + used to accept the auto-generated message (this is generally + discouraged). +ifndef::git-pull[] +The `--edit` (or `-e`) option is still useful if you are +giving a draft message with the `-m` option from the command line +and want to edit it in the editor. +endif::git-pull[] ++ +Older scripts may depend on the historical behaviour of not allowing the +user to edit the merge log message. They will see an editor opened when +they run `git merge`. To make it easier to adjust such scripts to the +updated behaviour, the environment variable `GIT_MERGE_AUTOEDIT` can be +set to `no` at the beginning of them. + +`--cleanup=<mode>`:: + This option determines how the merge message will be cleaned up before + committing. See linkgit:git-commit[1] for more details. In addition, if + the _<mode>_ is given a value of `scissors`, scissors will be appended + to `MERGE_MSG` before being passed on to the commit machinery in the + case of a merge conflict. + +ifdef::git-merge[] +`--ff`:: +`--no-ff`:: +`--ff-only`:: + Specifies how a merge is handled when the merged-in history is + already a descendant of the current history. `--ff` is the + default unless merging an annotated (and possibly signed) tag + that is not stored in its natural place in the `refs/tags/` + hierarchy, in which case `--no-ff` is assumed. +endif::git-merge[] +ifdef::git-pull[] +`--ff-only`:: + Only update to the new history if there is no divergent local + history. This is the default when no method for reconciling + divergent histories is provided (via the --rebase=* flags). + +`--ff`:: +`--no-ff`:: + When merging rather than rebasing, specifies how a merge is + handled when the merged-in history is already a descendant of + the current history. If merging is requested, `--ff` is the + default unless merging an annotated (and possibly signed) tag + that is not stored in its natural place in the `refs/tags/` + hierarchy, in which case `--no-ff` is assumed. +endif::git-pull[] ++ +With `--ff`, when possible resolve the merge as a fast-forward (only +update the branch pointer to match the merged branch; do not create a +merge commit). When not possible (when the merged-in history is not a +descendant of the current history), create a merge commit. ++ +With `--no-ff`, create a merge commit in all cases, even when the merge +could instead be resolved as a fast-forward. +ifdef::git-merge[] ++ +With `--ff-only`, resolve the merge as a fast-forward when possible. +When not possible, refuse to merge and exit with a non-zero status. +endif::git-merge[] + +`-S[<key-id>]`:: +`--gpg-sign[=<key-id>]`:: +`--no-gpg-sign`:: + GPG-sign the resulting merge commit. The _<key-id>_ argument is + optional and defaults to the committer identity; if specified, + it must be stuck to the option without a space. `--no-gpg-sign` + is useful to countermand both `commit.gpgSign` configuration variable, + and earlier `--gpg-sign`. + +`--log[=<n>]`:: +`--no-log`:: + In addition to branch names, populate the log message with + one-line descriptions from at most _<n>_ actual commits that are being + merged. See also linkgit:git-fmt-merge-msg[1]. +ifdef::git-pull[] + Only useful when merging. +endif::git-pull[] ++ +With `--no-log` do not list one-line descriptions from the +actual commits being merged. + +include::signoff-option.adoc[] + +`--stat`:: +`-n`:: +`--no-stat`:: + Show a diffstat at the end of the merge. The diffstat is also + controlled by the configuration option merge.stat. ++ +With `-n` or `--no-stat` do not show a diffstat at the end of the +merge. + +`--compact-summary`:: + Show a compact-summary at the end of the merge. + +`--squash`:: +`--no-squash`:: + Produce the working tree and index state as if a real merge + happened (except for the merge information), but do not actually + make a commit, move the `HEAD`, or record `$GIT_DIR/MERGE_HEAD` + (to cause the next `git commit` command to create a merge + commit). This allows you to create a single commit on top of + the current branch whose effect is the same as merging another + branch (or more in case of an octopus). ++ +With `--no-squash` perform the merge and commit the result. This +option can be used to override `--squash`. ++ +With `--squash`, `--commit` is not allowed, and will fail. +ifdef::git-pull[] ++ +Only useful when merging. +endif::git-pull[] + +`--[no-]verify`:: + By default, the pre-merge and commit-msg hooks are run. + When `--no-verify` is given, these are bypassed. + See also linkgit:githooks[5]. +ifdef::git-pull[] + Only useful when merging. +endif::git-pull[] + +`-s <strategy>`:: +`--strategy=<strategy>`:: + Use the given merge strategy; can be supplied more than + once to specify them in the order they should be tried. + If there is no `-s` option, a built-in list of strategies + is used instead (`ort` when merging a single head, + `octopus` otherwise). + +`-X <option>`:: +`--strategy-option=<option>`:: + Pass merge strategy specific option through to the merge + strategy. + +`--verify-signatures`:: +`--no-verify-signatures`:: + Verify that the tip commit of the side branch being merged is + signed with a valid key, i.e. a key that has a valid uid: in the + default trust model, this means the signing key has been signed by + a trusted key. If the tip commit of the side branch is not signed + with a valid key, the merge is aborted. +ifdef::git-pull[] ++ +Only useful when merging. +endif::git-pull[] + +`--summary`:: +`--no-summary`:: + Synonyms to `--stat` and `--no-stat`; these are deprecated and will be + removed in the future. + +ifndef::git-pull[] +`-q`:: +`--quiet`:: + Operate quietly. Implies `--no-progress`. + +`-v`:: +`--verbose`:: + Be verbose. + +`--progress`:: +`--no-progress`:: + Turn progress on/off explicitly. If neither is specified, + progress is shown if standard error is connected to a terminal. + Note that not all merge strategies may support progress + reporting. + +endif::git-pull[] + +`--autostash`:: +`--no-autostash`:: + Automatically create a temporary stash entry before the operation + begins, record it in the ref `MERGE_AUTOSTASH` + and apply it after the operation ends. This means + that you can run the operation on a dirty worktree. However, use + with care: the final stash application after a successful + merge might result in non-trivial conflicts. + +`--allow-unrelated-histories`:: + By default, `git merge` command refuses to merge histories + that do not share a common ancestor. This option can be + used to override this safety when merging histories of two + projects that started their lives independently. As that is + a very rare occasion, no configuration variable to enable + this by default exists or will be added. +ifdef::git-pull[] ++ +Only useful when merging. +endif::git-pull[] |