summaryrefslogtreecommitdiff
path: root/Documentation/config/merge.adoc
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/config/merge.adoc')
-rw-r--r--Documentation/config/merge.adoc140
1 files changed, 140 insertions, 0 deletions
diff --git a/Documentation/config/merge.adoc b/Documentation/config/merge.adoc
new file mode 100644
index 0000000000..15a4c14c38
--- /dev/null
+++ b/Documentation/config/merge.adoc
@@ -0,0 +1,140 @@
+`merge.conflictStyle`::
+ Specify the style in which conflicted hunks are written out to
+ working tree files upon merge. The default is "merge", which
+ shows a +<<<<<<<+ conflict marker, changes made by one side,
+ a `=======` marker, changes made by the other side, and then
+ a +>>>>>>>+ marker. An alternate style, "diff3", adds a +|||||||+
+ marker and the original text before the `=======` marker. The
+ "merge" style tends to produce smaller conflict regions than diff3,
+ both because of the exclusion of the original text, and because
+ when a subset of lines match on the two sides, they are just pulled
+ out of the conflict region. Another alternate style, "zdiff3", is
+ similar to diff3 but removes matching lines on the two sides from
+ the conflict region when those matching lines appear near either
+ the beginning or end of a conflict region.
+
+`merge.defaultToUpstream`::
+ If merge is called without any commit argument, merge the upstream
+ branches configured for the current branch by using their last
+ observed values stored in their remote-tracking branches.
+ The values of the `branch.<current branch>.merge` that name the
+ branches at the remote named by `branch.<current-branch>.remote`
+ are consulted, and then they are mapped via `remote.<remote>.fetch`
+ to their corresponding remote-tracking branches, and the tips of
+ these tracking branches are merged. Defaults to true.
+
+`merge.ff`::
+ By default, Git does not create an extra merge commit when merging
+ a commit that is a descendant of the current commit. Instead, the
+ tip of the current branch is fast-forwarded. When set to `false`,
+ this variable tells Git to create an extra merge commit in such
+ a case (equivalent to giving the `--no-ff` option from the command
+ line). When set to `only`, only such fast-forward merges are
+ allowed (equivalent to giving the `--ff-only` option from the
+ command line).
+
+`merge.verifySignatures`::
+ If true, this is equivalent to the `--verify-signatures` command
+ line option. See linkgit:git-merge[1] for details.
+
+include::fmt-merge-msg.adoc[]
+
+`merge.renameLimit`::
+ The number of files to consider in the exhaustive portion of
+ rename detection during a merge. If not specified, defaults
+ to the value of `diff.renameLimit`. If neither
+ `merge.renameLimit` nor `diff.renameLimit` are specified,
+ currently defaults to 7000. This setting has no effect if
+ rename detection is turned off.
+
+`merge.renames`::
+ Whether Git detects renames. If set to `false`, rename detection
+ is disabled. If set to `true`, basic rename detection is enabled.
+ Defaults to the value of diff.renames.
+
+`merge.directoryRenames`::
+ Whether Git detects directory renames, affecting what happens at
+ merge time to new files added to a directory on one side of
+ history when that directory was renamed on the other side of
+ history. Possible values are:
++
+--
+`false`;; Directory rename detection is disabled, meaning that such new files will be
+ left behind in the old directory.
+`true`;; Directory rename detection is enabled, meaning that such new files will be
+ moved into the new directory.
+`conflict`;; A conflict will be reported for such paths.
+--
++
+If `merge.renames` is `false`, `merge.directoryRenames` is ignored and treated
+as `false`. Defaults to `conflict`.
+
+`merge.renormalize`::
+ Tell Git that canonical representation of files in the
+ repository has changed over time (e.g. earlier commits record
+ text files with _CRLF_ line endings, but recent ones use _LF_ line
+ endings). In such a repository, for each file where a
+ three-way content merge is needed, Git can convert the data
+ recorded in commits to a canonical form before performing a
+ merge to reduce unnecessary conflicts. For more information,
+ see section "Merging branches with differing checkin/checkout
+ attributes" in linkgit:gitattributes[5].
+
+`merge.stat`::
+ What, if anything, to print between `ORIG_HEAD` and the merge result
+ at the end of the merge. Possible values are:
++
+--
+`false`;; Show nothing.
+`true`;; Show `git diff --diffstat --summary ORIG_HEAD`.
+`compact`;; Show `git diff --compact-summary ORIG_HEAD`.
+--
++
+but any unrecognised value (e.g., a value added by a future version of
+Git) is taken as `true` instead of triggering an error. Defaults to
+`true`.
+
+`merge.autoStash`::
+ When set to `true`, automatically create a temporary stash entry
+ before the operation begins, and apply it after the operation
+ ends. This means that you can run merge on a dirty worktree.
+ However, use with care: the final stash application after a
+ successful merge might result in non-trivial conflicts.
+ This option can be overridden by the `--no-autostash` and
+ `--autostash` options of linkgit:git-merge[1].
+ Defaults to `false`.
+
+`merge.tool`::
+ Controls which merge tool is used by linkgit:git-mergetool[1].
+ The list below shows the valid built-in values.
+ Any other value is treated as a custom merge tool and requires
+ that a corresponding `mergetool.<tool>.cmd` variable is defined.
+
+`merge.guitool`::
+ Controls which merge tool is used by linkgit:git-mergetool[1] when the
+ `-g`/`--gui` flag is specified. The list below shows the valid built-in values.
+ Any other value is treated as a custom merge tool and requires that a
+ corresponding `mergetool.<guitool>.cmd` variable is defined.
+
+include::{build_dir}/mergetools-merge.adoc[]
+
+`merge.verbosity`::
+ Controls the amount of output shown by the recursive merge
+ strategy. Level 0 outputs nothing except a final error
+ message if conflicts were detected. Level 1 outputs only
+ conflicts, 2 outputs conflicts and file changes. Level 5 and
+ above outputs debugging information. The default is level 2.
+ Can be overridden by the `GIT_MERGE_VERBOSITY` environment variable.
+
+`merge.<driver>.name`::
+ Defines a human-readable name for a custom low-level
+ merge driver. See linkgit:gitattributes[5] for details.
+
+`merge.<driver>.driver`::
+ Defines the command that implements a custom low-level
+ merge driver. See linkgit:gitattributes[5] for details.
+
+`merge.<driver>.recursive`::
+ Names a low-level merge driver to be used when
+ performing an internal merge between common ancestors.
+ See linkgit:gitattributes[5] for details.