--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[<keyid>]::
--gpg-sign[=<keyid>]::
--no-gpg-sign::
	GPG-sign the resulting merge commit. The `keyid` 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.

--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 and will not be added.
ifdef::git-pull[]
+
Only useful when merging.
endif::git-pull[]
