bf10200871
"git merge" learns the "--autostash" option. * dl/merge-autostash: (22 commits) pull: pass --autostash to merge t5520: make test_pull_autostash() accept expect_parent_num merge: teach --autostash option sequencer: implement apply_autostash_oid() sequencer: implement save_autostash() sequencer: unlink autostash in apply_autostash() sequencer: extract perform_autostash() from rebase rebase: generify create_autostash() rebase: extract create_autostash() reset: extract reset_head() from rebase rebase: generify reset_head() rebase: use apply_autostash() from sequencer.c sequencer: rename stash_sha1 to stash_oid sequencer: make apply_autostash() accept a path rebase: use read_oneliner() sequencer: make read_oneliner() extern sequencer: configurably warn on non-existent files sequencer: make read_oneliner() accept flags sequencer: make file exists check more efficient sequencer: stop leaking buf ...
178 lines
6.3 KiB
Plaintext
178 lines
6.3 KiB
Plaintext
--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
|
|
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.
|
|
|
|
--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.
|
|
+
|
|
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.
|
|
+
|
|
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.
|
|
|
|
-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].
|
|
+
|
|
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.
|
|
|
|
--no-verify::
|
|
This option bypasses the pre-merge and commit-msg hooks.
|
|
See also linkgit:githooks[5].
|
|
|
|
-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[]
|
|
|
|
--autostash::
|
|
--no-autostash::
|
|
Automatically create a temporary stash entry before the operation
|
|
begins, 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.
|