mirror of
https://github.com/git/git
synced 2024-11-05 18:59:29 +00:00
6e0b1c60ad
"git merge --squash" is designed to update the working tree and the index without creating the commit, and this cannot be countermanded by adding the "--commit" option; the command now refuses to work when both options are given. * vv/merge-squash-with-explicit-commit: merge: refuse --commit with --squash
158 lines
5.5 KiB
Text
158 lines
5.5 KiB
Text
--commit::
|
|
--no-commit::
|
|
Perform the merge and commit the result. This option can
|
|
be used to override --no-commit.
|
|
+
|
|
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
|
|
commiting. 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.
|
|
|
|
--ff::
|
|
When the merge resolves as a fast-forward, only update the branch
|
|
pointer, without creating a merge commit. This is the default
|
|
behavior.
|
|
|
|
--no-ff::
|
|
Create a merge commit even when the merge resolves as a
|
|
fast-forward. This is the default behaviour when merging an
|
|
annotated (and possibly signed) tag that is not stored in
|
|
its natural place in 'refs/tags/' hierarchy.
|
|
|
|
--ff-only::
|
|
Refuse to merge and exit with a non-zero status unless the
|
|
current `HEAD` is already up to date or the merge can be
|
|
resolved as a fast-forward.
|
|
|
|
-S[<keyid>]::
|
|
--gpg-sign[=<keyid>]::
|
|
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.
|
|
|
|
--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].
|
|
+
|
|
With --no-log do not list one-line descriptions from the
|
|
actual commits being merged.
|
|
|
|
--signoff::
|
|
--no-signoff::
|
|
Add Signed-off-by line by the committer at the end of the commit
|
|
log message. The meaning of a signoff depends on the project,
|
|
but it typically certifies that committer has
|
|
the rights to submit this work under the same license and
|
|
agrees to a Developer Certificate of Origin
|
|
(see http://developercertificate.org/ for more information).
|
|
+
|
|
With --no-signoff do not add a Signed-off-by line.
|
|
|
|
--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.
|
|
|
|
-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 ('git merge-recursive' when merging a single
|
|
head, 'git merge-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.
|
|
|
|
--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[]
|
|
|
|
--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.
|