summaryrefslogtreecommitdiff
path: root/Documentation/merge-options.adoc
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/merge-options.adoc')
-rw-r--r--Documentation/merge-options.adoc213
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[]