| 1 | `merge.conflictStyle`:: |
| 2 | Specify the style in which conflicted hunks are written out to |
| 3 | working tree files upon merge. The default is "merge", which |
| 4 | shows a +<<<<<<<+ conflict marker, changes made by one side, |
| 5 | a `=======` marker, changes made by the other side, and then |
| 6 | a +>>>>>>>+ marker. An alternate style, "diff3", adds a +|||||||+ |
| 7 | marker and the original text before the `=======` marker. The |
| 8 | "merge" style tends to produce smaller conflict regions than diff3, |
| 9 | both because of the exclusion of the original text, and because |
| 10 | when a subset of lines match on the two sides, they are just pulled |
| 11 | out of the conflict region. Another alternate style, "zdiff3", is |
| 12 | similar to diff3 but removes matching lines on the two sides from |
| 13 | the conflict region when those matching lines appear near either |
| 14 | the beginning or end of a conflict region. |
| 15 | |
| 16 | `merge.defaultToUpstream`:: |
| 17 | If merge is called without any commit argument, merge the upstream |
| 18 | branches configured for the current branch by using their last |
| 19 | observed values stored in their remote-tracking branches. |
| 20 | The values of the `branch.<current branch>.merge` that name the |
| 21 | branches at the remote named by `branch.<current-branch>.remote` |
| 22 | are consulted, and then they are mapped via `remote.<remote>.fetch` |
| 23 | to their corresponding remote-tracking branches, and the tips of |
| 24 | these tracking branches are merged. Defaults to true. |
| 25 | |
| 26 | `merge.ff`:: |
| 27 | By default, Git does not create an extra merge commit when merging |
| 28 | a commit that is a descendant of the current commit. Instead, the |
| 29 | tip of the current branch is fast-forwarded. When set to `false`, |
| 30 | this variable tells Git to create an extra merge commit in such |
| 31 | a case (equivalent to giving the `--no-ff` option from the command |
| 32 | line). When set to `only`, only such fast-forward merges are |
| 33 | allowed (equivalent to giving the `--ff-only` option from the |
| 34 | command line). |
| 35 | |
| 36 | `merge.verifySignatures`:: |
| 37 | If true, this is equivalent to the `--verify-signatures` command |
| 38 | line option. See linkgit:git-merge[1] for details. |
| 39 | |
| 40 | include::fmt-merge-msg.adoc[] |
| 41 | |
| 42 | `merge.renameLimit`:: |
| 43 | The number of files to consider in the exhaustive portion of |
| 44 | rename detection during a merge. If not specified, defaults |
| 45 | to the value of `diff.renameLimit`. If neither |
| 46 | `merge.renameLimit` nor `diff.renameLimit` are specified, |
| 47 | currently defaults to 7000. This setting has no effect if |
| 48 | rename detection is turned off. |
| 49 | |
| 50 | `merge.renames`:: |
| 51 | Whether Git detects renames. If set to `false`, rename detection |
| 52 | is disabled. If set to `true`, basic rename detection is enabled. |
| 53 | Defaults to the value of diff.renames. |
| 54 | |
| 55 | `merge.directoryRenames`:: |
| 56 | Whether Git detects directory renames, affecting what happens at |
| 57 | merge time to new files added to a directory on one side of |
| 58 | history when that directory was renamed on the other side of |
| 59 | history. Possible values are: |
| 60 | + |
| 61 | -- |
| 62 | `false`;; Directory rename detection is disabled, meaning that such new files will be |
| 63 | left behind in the old directory. |
| 64 | `true`;; Directory rename detection is enabled, meaning that such new files will be |
| 65 | moved into the new directory. |
| 66 | `conflict`;; A conflict will be reported for such paths. |
| 67 | -- |
| 68 | + |
| 69 | If `merge.renames` is `false`, `merge.directoryRenames` is ignored and treated |
| 70 | as `false`. Defaults to `conflict`. |
| 71 | |
| 72 | `merge.renormalize`:: |
| 73 | Tell Git that canonical representation of files in the |
| 74 | repository has changed over time (e.g. earlier commits record |
| 75 | text files with _CRLF_ line endings, but recent ones use _LF_ line |
| 76 | endings). In such a repository, for each file where a |
| 77 | three-way content merge is needed, Git can convert the data |
| 78 | recorded in commits to a canonical form before performing a |
| 79 | merge to reduce unnecessary conflicts. For more information, |
| 80 | see section "Merging branches with differing checkin/checkout |
| 81 | attributes" in linkgit:gitattributes[5]. |
| 82 | |
| 83 | `merge.stat`:: |
| 84 | What, if anything, to print between `ORIG_HEAD` and the merge result |
| 85 | at the end of the merge. Possible values are: |
| 86 | + |
| 87 | -- |
| 88 | `false`;; Show nothing. |
| 89 | `true`;; Show `git diff --diffstat --summary ORIG_HEAD`. |
| 90 | `compact`;; Show `git diff --compact-summary ORIG_HEAD`. |
| 91 | -- |
| 92 | + |
| 93 | but any unrecognised value (e.g., a value added by a future version of |
| 94 | Git) is taken as `true` instead of triggering an error. Defaults to |
| 95 | `true`. |
| 96 | |
| 97 | `merge.autoStash`:: |
| 98 | When set to `true`, automatically create a temporary stash entry |
| 99 | before the operation begins, and apply it after the operation |
| 100 | ends. This means that you can run merge on a dirty worktree. |
| 101 | However, use with care: the final stash application after a |
| 102 | successful merge might result in non-trivial conflicts. |
| 103 | This option can be overridden by the `--no-autostash` and |
| 104 | `--autostash` options of linkgit:git-merge[1]. |
| 105 | Defaults to `false`. |
| 106 | |
| 107 | `merge.tool`:: |
| 108 | Controls which merge tool is used by linkgit:git-mergetool[1]. |
| 109 | The list below shows the valid built-in values. |
| 110 | Any other value is treated as a custom merge tool and requires |
| 111 | that a corresponding `mergetool.<tool>.cmd` variable is defined. |
| 112 | |
| 113 | `merge.guitool`:: |
| 114 | Controls which merge tool is used by linkgit:git-mergetool[1] when the |
| 115 | `-g`/`--gui` flag is specified. The list below shows the valid built-in values. |
| 116 | Any other value is treated as a custom merge tool and requires that a |
| 117 | corresponding `mergetool.<guitool>.cmd` variable is defined. |
| 118 | |
| 119 | include::{build_dir}/mergetools-merge.adoc[] |
| 120 | |
| 121 | `merge.verbosity`:: |
| 122 | Controls the amount of output shown by the recursive merge |
| 123 | strategy. Level 0 outputs nothing except a final error |
| 124 | message if conflicts were detected. Level 1 outputs only |
| 125 | conflicts, 2 outputs conflicts and file changes. Level 5 and |
| 126 | above outputs debugging information. The default is level 2. |
| 127 | Can be overridden by the `GIT_MERGE_VERBOSITY` environment variable. |
| 128 | |
| 129 | `merge.<driver>.name`:: |
| 130 | Defines a human-readable name for a custom low-level |
| 131 | merge driver. See linkgit:gitattributes[5] for details. |
| 132 | |
| 133 | `merge.<driver>.driver`:: |
| 134 | Defines the command that implements a custom low-level |
| 135 | merge driver. See linkgit:gitattributes[5] for details. |
| 136 | |
| 137 | `merge.<driver>.recursive`:: |
| 138 | Names a low-level merge driver to be used when |
| 139 | performing an internal merge between common ancestors. |
| 140 | See linkgit:gitattributes[5] for details. |