mirror of
https://github.com/git/git.git
synced 2024-11-02 07:17:58 +01:00
f8246281af
Traditionally, a cleanly resolved merge was committed by "git merge" using the auto-generated merge commit log message without invoking the editor. After 5 years of use in the field, it turns out that people perform too many unjustified merges of the upstream history into their topic branches. These merges are not just useless, but they are often not explained well, and making the end result unreadable when it gets time for merging their history back to their upstream. Earlier we added the "--edit" option to the command, so that people can edit the log message to explain and justify their merge commits. Let's take it one step further and spawn the editor by default when we are in an interactive session (i.e. the standard input and the standard output are pointing at the same tty device). There may be existing scripts that leave the standard input and the standard output of the "git merge" connected to whatever environment the scripts were started, and such invocation might trigger the above "interactive session" heuristics. GIT_MERGE_AUTOEDIT environment variable can be set to "no" at the beginning of such scripts to use the historical behaviour while the script runs. Note that this backward compatibility is meant only for scripts, and we deliberately do *not* support "merge.edit = yes/no/auto" configuration option to allow people to keep the historical behaviour. Suggested-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
107 lines
3.4 KiB
Text
107 lines
3.4 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 but pretend the merge
|
|
failed and do not autocommit, to give the user a chance to
|
|
inspect and further tweak the merge result before committing.
|
|
|
|
--edit::
|
|
--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). The `--edit` 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.
|
|
+
|
|
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.
|
|
|
|
--ff::
|
|
--no-ff::
|
|
Do not generate a merge commit if the merge resolved as
|
|
a fast-forward, only update the branch pointer. This is
|
|
the default behavior of git-merge.
|
|
+
|
|
With --no-ff Generate a merge commit even if the merge
|
|
resolved as a fast-forward.
|
|
|
|
--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.
|
|
|
|
|
|
--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 or
|
|
move the `HEAD`, nor 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.
|
|
|
|
--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 <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.
|
|
|
|
--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[]
|