Junio C Hamano | 0f69be5 | 2005-09-09 01:15:47 -0700 | [diff] [blame] | 1 | git-merge(1) |
| 2 | ============ |
Junio C Hamano | 0f69be5 | 2005-09-09 01:15:47 -0700 | [diff] [blame] | 3 | |
| 4 | NAME |
| 5 | ---- |
Junio C Hamano | c3f0baa | 2007-01-18 15:53:37 -0800 | [diff] [blame] | 6 | git-merge - Join two or more development histories together |
Junio C Hamano | 0f69be5 | 2005-09-09 01:15:47 -0700 | [diff] [blame] | 7 | |
| 8 | |
| 9 | SYNOPSIS |
| 10 | -------- |
Junio C Hamano | 17bcdad | 2006-11-20 01:06:09 -0800 | [diff] [blame] | 11 | [verse] |
Junio C Hamano | f824628 | 2012-01-10 22:44:45 -0800 | [diff] [blame] | 12 | 'git merge' [-n] [--stat] [--no-commit] [--squash] [--[no-]edit] |
Junio C Hamano | e703d71 | 2014-03-23 15:58:12 -0700 | [diff] [blame] | 13 | [-s <strategy>] [-X <strategy-option>] [-S[<key-id>]] |
Junio C Hamano | 93e535a | 2011-03-23 23:48:24 -0700 | [diff] [blame] | 14 | [--[no-]rerere-autoupdate] [-m <msg>] [<commit>...] |
Thomas Rast | 57bddb1 | 2010-01-07 17:32:19 +0100 | [diff] [blame] | 15 | 'git merge' <msg> HEAD <commit>... |
Johan Herland | 35d2fff | 2010-11-09 22:49:59 +0100 | [diff] [blame] | 16 | 'git merge' --abort |
Junio C Hamano | 0f69be5 | 2005-09-09 01:15:47 -0700 | [diff] [blame] | 17 | |
| 18 | DESCRIPTION |
| 19 | ----------- |
Jonathan Nieder | b40bb37 | 2010-01-23 03:42:46 -0600 | [diff] [blame] | 20 | Incorporates changes from the named commits (since the time their |
| 21 | histories diverged from the current branch) into the current |
| 22 | branch. This command is used by 'git pull' to incorporate changes |
| 23 | from another repository and can be used by hand to merge changes |
| 24 | from one branch into another. |
| 25 | |
| 26 | Assume the following history exists and the current branch is |
| 27 | "`master`": |
| 28 | |
| 29 | ------------ |
| 30 | A---B---C topic |
| 31 | / |
| 32 | D---E---F---G master |
| 33 | ------------ |
| 34 | |
| 35 | Then "`git merge topic`" will replay the changes made on the |
| 36 | `topic` branch since it diverged from `master` (i.e., `E`) until |
| 37 | its current commit (`C`) on top of `master`, and record the result |
| 38 | in a new commit along with the names of the two parent commits and |
| 39 | a log message from the user describing the changes. |
| 40 | |
| 41 | ------------ |
| 42 | A---B---C topic |
| 43 | / \ |
| 44 | D---E---F---G---H master |
| 45 | ------------ |
Junio C Hamano | 0f69be5 | 2005-09-09 01:15:47 -0700 | [diff] [blame] | 46 | |
Thomas Rast | 57bddb1 | 2010-01-07 17:32:19 +0100 | [diff] [blame] | 47 | The second syntax (<msg> `HEAD` <commit>...) is supported for |
Junio C Hamano | dee48c3 | 2007-10-30 11:54:11 -0700 | [diff] [blame] | 48 | historical reasons. Do not use it from the command line or in |
Thomas Rast | 57bddb1 | 2010-01-07 17:32:19 +0100 | [diff] [blame] | 49 | new scripts. It is the same as `git merge -m <msg> <commit>...`. |
Junio C Hamano | dee48c3 | 2007-10-30 11:54:11 -0700 | [diff] [blame] | 50 | |
Johan Herland | 35d2fff | 2010-11-09 22:49:59 +0100 | [diff] [blame] | 51 | The third syntax ("`git merge --abort`") can only be run after the |
| 52 | merge has resulted in conflicts. 'git merge --abort' will abort the |
| 53 | merge process and try to reconstruct the pre-merge state. However, |
| 54 | if there were uncommitted changes when the merge started (and |
| 55 | especially if those changes were further modified after the merge |
| 56 | was started), 'git merge --abort' will in some cases be unable to |
| 57 | reconstruct the original (pre-merge) changes. Therefore: |
| 58 | |
Matthieu Moy | 76b80cd | 2013-06-18 10:42:55 +0200 | [diff] [blame] | 59 | *Warning*: Running 'git merge' with non-trivial uncommitted changes is |
| 60 | discouraged: while possible, it may leave you in a state that is hard to |
Thomas Rast | e330d8c | 2010-01-07 17:42:27 +0100 | [diff] [blame] | 61 | back out of in the case of a conflict. |
Junio C Hamano | 0f69be5 | 2005-09-09 01:15:47 -0700 | [diff] [blame] | 62 | |
| 63 | |
| 64 | OPTIONS |
| 65 | ------- |
Jon Loeliger | 93d69d8 | 2005-11-06 23:30:56 -0600 | [diff] [blame] | 66 | include::merge-options.txt[] |
Junio C Hamano | 0f69be5 | 2005-09-09 01:15:47 -0700 | [diff] [blame] | 67 | |
Nicolas Vigier | 5f737ac | 2013-10-15 01:41:05 +0200 | [diff] [blame] | 68 | -S[<keyid>]:: |
| 69 | --gpg-sign[=<keyid>]:: |
| 70 | GPG-sign the resulting merge commit. |
| 71 | |
Junio C Hamano | dee48c3 | 2007-10-30 11:54:11 -0700 | [diff] [blame] | 72 | -m <msg>:: |
Jonathan Nieder | 0f8a02c | 2009-10-09 05:16:15 -0500 | [diff] [blame] | 73 | Set the commit message to be used for the merge commit (in |
Tay Ray Chuan | f0ecac2 | 2010-05-11 01:17:52 +0800 | [diff] [blame] | 74 | case one is created). |
Nathan W. Panike | af77aee | 2010-10-29 10:33:54 -0500 | [diff] [blame] | 75 | + |
| 76 | If `--log` is specified, a shortlog of the commits being merged |
| 77 | will be appended to the specified message. |
| 78 | + |
| 79 | The 'git fmt-merge-msg' command can be |
| 80 | used to give a good default for automated 'git merge' |
| 81 | invocations. |
Petr Baudis | 3c64314 | 2005-11-01 21:45:55 +0100 | [diff] [blame] | 82 | |
Felipe Contreras | 0460ed2 | 2013-05-08 20:16:55 -0500 | [diff] [blame] | 83 | --[no-]rerere-autoupdate:: |
Junio C Hamano | cb6020b | 2009-12-04 00:20:48 -0800 | [diff] [blame] | 84 | Allow the rerere mechanism to update the index with the |
| 85 | result of auto-conflict resolution if possible. |
| 86 | |
Johan Herland | 35d2fff | 2010-11-09 22:49:59 +0100 | [diff] [blame] | 87 | --abort:: |
| 88 | Abort the current conflict resolution process, and |
| 89 | try to reconstruct the pre-merge state. |
| 90 | + |
| 91 | If there were uncommitted worktree changes present when the merge |
| 92 | started, 'git merge --abort' will in some cases be unable to |
| 93 | reconstruct these changes. It is therefore recommended to always |
| 94 | commit or stash your changes before running 'git merge'. |
| 95 | + |
| 96 | 'git merge --abort' is equivalent to 'git reset --merge' when |
| 97 | `MERGE_HEAD` is present. |
| 98 | |
Thomas Rast | 57bddb1 | 2010-01-07 17:32:19 +0100 | [diff] [blame] | 99 | <commit>...:: |
| 100 | Commits, usually other branch heads, to merge into our branch. |
Junio C Hamano | 93e535a | 2011-03-23 23:48:24 -0700 | [diff] [blame] | 101 | Specifying more than one commit will create a merge with |
| 102 | more than two parents (affectionately called an Octopus merge). |
| 103 | + |
Felipe Contreras | a01f7f2 | 2014-04-20 19:17:33 -0500 | [diff] [blame] | 104 | If no commit is given from the command line, merge the remote-tracking |
| 105 | branches that the current branch is configured to use as its upstream. |
Junio C Hamano | 93e535a | 2011-03-23 23:48:24 -0700 | [diff] [blame] | 106 | See also the configuration section of this manual page. |
Junio C Hamano | 74e8bc5 | 2015-04-25 18:47:21 -0700 | [diff] [blame] | 107 | + |
| 108 | When `FETCH_HEAD` (and no other commit) is specified, the branches |
| 109 | recorded in the `.git/FETCH_HEAD` file by the previous invocation |
| 110 | of `git fetch` for merging are merged to the current branch. |
Junio C Hamano | 0f69be5 | 2005-09-09 01:15:47 -0700 | [diff] [blame] | 111 | |
Jon Loeliger | bb73d73 | 2005-11-06 10:26:07 -0600 | [diff] [blame] | 112 | |
Jonathan Nieder | 30f2bad | 2010-01-23 03:44:17 -0600 | [diff] [blame] | 113 | PRE-MERGE CHECKS |
| 114 | ---------------- |
Junio C Hamano | 0f69be5 | 2005-09-09 01:15:47 -0700 | [diff] [blame] | 115 | |
Jonathan Nieder | 30f2bad | 2010-01-23 03:44:17 -0600 | [diff] [blame] | 116 | Before applying outside changes, you should get your own work in |
| 117 | good shape and committed locally, so it will not be clobbered if |
| 118 | there are conflicts. See also linkgit:git-stash[1]. |
| 119 | 'git pull' and 'git merge' will stop without doing anything when |
| 120 | local uncommitted changes overlap with files that 'git pull'/'git |
| 121 | merge' may need to update. |
Junio C Hamano | 3ae854c | 2005-12-16 18:23:33 -0800 | [diff] [blame] | 122 | |
Jonathan Nieder | 30f2bad | 2010-01-23 03:44:17 -0600 | [diff] [blame] | 123 | To avoid recording unrelated changes in the merge commit, |
| 124 | 'git pull' and 'git merge' will also abort if there are any changes |
| 125 | registered in the index relative to the `HEAD` commit. (One |
| 126 | exception is when the changed index entries are in the state that |
| 127 | would result from the merge already.) |
Jakub Narebski | dbddb71 | 2007-07-13 01:54:06 +0200 | [diff] [blame] | 128 | |
Jonathan Nieder | 30f2bad | 2010-01-23 03:44:17 -0600 | [diff] [blame] | 129 | If all named commits are already ancestors of `HEAD`, 'git merge' |
| 130 | will exit early with the message "Already up-to-date." |
Junio C Hamano | 3ae854c | 2005-12-16 18:23:33 -0800 | [diff] [blame] | 131 | |
Jonathan Nieder | 2928031 | 2010-01-23 03:45:33 -0600 | [diff] [blame] | 132 | FAST-FORWARD MERGE |
| 133 | ------------------ |
Junio C Hamano | ffb1a4b | 2005-11-28 22:54:30 -0800 | [diff] [blame] | 134 | |
Jonathan Nieder | 2928031 | 2010-01-23 03:45:33 -0600 | [diff] [blame] | 135 | Often the current branch head is an ancestor of the named commit. |
| 136 | This is the most common case especially when invoked from 'git |
| 137 | pull': you are tracking an upstream repository, you have committed |
| 138 | no local changes, and now you want to update to a newer upstream |
| 139 | revision. In this case, a new commit is not needed to store the |
| 140 | combined history; instead, the `HEAD` (along with the index) is |
| 141 | updated to point at the named commit, without creating an extra |
| 142 | merge commit. |
Junio C Hamano | ffb1a4b | 2005-11-28 22:54:30 -0800 | [diff] [blame] | 143 | |
Jonathan Nieder | 2928031 | 2010-01-23 03:45:33 -0600 | [diff] [blame] | 144 | This behavior can be suppressed with the `--no-ff` option. |
Junio C Hamano | ffb1a4b | 2005-11-28 22:54:30 -0800 | [diff] [blame] | 145 | |
Jonathan Nieder | ebef7e5 | 2010-01-23 03:48:42 -0600 | [diff] [blame] | 146 | TRUE MERGE |
| 147 | ---------- |
Junio C Hamano | ffb1a4b | 2005-11-28 22:54:30 -0800 | [diff] [blame] | 148 | |
Jonathan Nieder | 2928031 | 2010-01-23 03:45:33 -0600 | [diff] [blame] | 149 | Except in a fast-forward merge (see above), the branches to be |
| 150 | merged must be tied together by a merge commit that has both of them |
| 151 | as its parents. |
Junio C Hamano | ffb1a4b | 2005-11-28 22:54:30 -0800 | [diff] [blame] | 152 | |
Jonathan Nieder | ebef7e5 | 2010-01-23 03:48:42 -0600 | [diff] [blame] | 153 | A merged version reconciling the changes from all branches to be |
| 154 | merged is committed, and your `HEAD`, index, and working tree are |
| 155 | updated to it. It is possible to have modifications in the working |
| 156 | tree as long as they do not overlap; the update will preserve them. |
Junio C Hamano | ffb1a4b | 2005-11-28 22:54:30 -0800 | [diff] [blame] | 157 | |
Jonathan Nieder | ebef7e5 | 2010-01-23 03:48:42 -0600 | [diff] [blame] | 158 | When it is not obvious how to reconcile the changes, the following |
| 159 | happens: |
Junio C Hamano | ffb1a4b | 2005-11-28 22:54:30 -0800 | [diff] [blame] | 160 | |
Jonathan Nieder | ebef7e5 | 2010-01-23 03:48:42 -0600 | [diff] [blame] | 161 | 1. The `HEAD` pointer stays the same. |
| 162 | 2. The `MERGE_HEAD` ref is set to point to the other branch head. |
| 163 | 3. Paths that merged cleanly are updated both in the index file and |
Junio C Hamano | ffb1a4b | 2005-11-28 22:54:30 -0800 | [diff] [blame] | 164 | in your working tree. |
Jonathan Nieder | ebef7e5 | 2010-01-23 03:48:42 -0600 | [diff] [blame] | 165 | 4. For conflicting paths, the index file records up to three |
| 166 | versions: stage 1 stores the version from the common ancestor, |
| 167 | stage 2 from `HEAD`, and stage 3 from `MERGE_HEAD` (you |
Jonathan Nieder | b1889c3 | 2008-06-30 01:09:04 -0500 | [diff] [blame] | 168 | can inspect the stages with `git ls-files -u`). The working |
Ralf Wildenhues | 29b802a | 2008-12-09 07:23:51 +0100 | [diff] [blame] | 169 | tree files contain the result of the "merge" program; i.e. 3-way |
Jonathan Nieder | ebef7e5 | 2010-01-23 03:48:42 -0600 | [diff] [blame] | 170 | merge results with familiar conflict markers `<<<` `===` `>>>`. |
| 171 | 5. No other changes are made. In particular, the local |
Junio C Hamano | ffb1a4b | 2005-11-28 22:54:30 -0800 | [diff] [blame] | 172 | modifications you had before you started merge will stay the |
| 173 | same and the index entries for them stay as they were, |
| 174 | i.e. matching `HEAD`. |
| 175 | |
Jonathan Nieder | ed4a6ba | 2010-01-23 03:31:19 -0600 | [diff] [blame] | 176 | If you tried a merge which resulted in complex conflicts and |
Johan Herland | 35d2fff | 2010-11-09 22:49:59 +0100 | [diff] [blame] | 177 | want to start over, you can recover with `git merge --abort`. |
Jonathan Nieder | ed4a6ba | 2010-01-23 03:31:19 -0600 | [diff] [blame] | 178 | |
Junio C Hamano | 77c7278 | 2013-03-21 22:57:48 +0100 | [diff] [blame] | 179 | MERGING TAG |
| 180 | ----------- |
| 181 | |
| 182 | When merging an annotated (and possibly signed) tag, Git always |
| 183 | creates a merge commit even if a fast-forward merge is possible, and |
| 184 | the commit message template is prepared with the tag message. |
| 185 | Additionally, if the tag is signed, the signature check is reported |
| 186 | as a comment in the message template. See also linkgit:git-tag[1]. |
| 187 | |
| 188 | When you want to just integrate with the work leading to the commit |
| 189 | that happens to be tagged, e.g. synchronizing with an upstream |
| 190 | release point, you may not want to make an unnecessary merge commit. |
| 191 | |
| 192 | In such a case, you can "unwrap" the tag yourself before feeding it |
| 193 | to `git merge`, or pass `--ff-only` when you do not have any work on |
| 194 | your own. e.g. |
| 195 | |
Andreas Schwab | e45bda8 | 2013-09-05 17:12:45 +0200 | [diff] [blame] | 196 | ---- |
Junio C Hamano | 77c7278 | 2013-03-21 22:57:48 +0100 | [diff] [blame] | 197 | git fetch origin |
| 198 | git merge v1.2.3^0 |
| 199 | git merge --ff-only v1.2.3 |
Andreas Schwab | e45bda8 | 2013-09-05 17:12:45 +0200 | [diff] [blame] | 200 | ---- |
Junio C Hamano | 77c7278 | 2013-03-21 22:57:48 +0100 | [diff] [blame] | 201 | |
| 202 | |
Junio C Hamano | 70a3f89 | 2008-08-31 20:36:32 -0700 | [diff] [blame] | 203 | HOW CONFLICTS ARE PRESENTED |
| 204 | --------------------------- |
| 205 | |
| 206 | During a merge, the working tree files are updated to reflect the result |
| 207 | of the merge. Among the changes made to the common ancestor's version, |
| 208 | non-overlapping ones (that is, you changed an area of the file while the |
| 209 | other side left that area intact, or vice versa) are incorporated in the |
| 210 | final result verbatim. When both sides made changes to the same area, |
Thomas Ackermann | 2de9b71 | 2013-01-21 20:17:53 +0100 | [diff] [blame] | 211 | however, Git cannot randomly pick one side over the other, and asks you to |
Junio C Hamano | 70a3f89 | 2008-08-31 20:36:32 -0700 | [diff] [blame] | 212 | resolve it by leaving what both sides did to that area. |
| 213 | |
Thomas Ackermann | 2de9b71 | 2013-01-21 20:17:53 +0100 | [diff] [blame] | 214 | By default, Git uses the same style as the one used by the "merge" program |
Junio C Hamano | 70a3f89 | 2008-08-31 20:36:32 -0700 | [diff] [blame] | 215 | from the RCS suite to present such a conflicted hunk, like this: |
| 216 | |
| 217 | ------------ |
| 218 | Here are lines that are either unchanged from the common |
| 219 | ancestor, or cleanly resolved because only one side changed. |
| 220 | <<<<<<< yours:sample.txt |
| 221 | Conflict resolution is hard; |
| 222 | let's go shopping. |
| 223 | ======= |
| 224 | Git makes conflict resolution easy. |
| 225 | >>>>>>> theirs:sample.txt |
| 226 | And here is another line that is cleanly resolved or unmodified. |
| 227 | ------------ |
| 228 | |
Ralf Wildenhues | 29b802a | 2008-12-09 07:23:51 +0100 | [diff] [blame] | 229 | The area where a pair of conflicting changes happened is marked with markers |
Chris Johnsen | dcb1126 | 2009-03-15 06:30:52 -0500 | [diff] [blame] | 230 | `<<<<<<<`, `=======`, and `>>>>>>>`. The part before the `=======` |
Ralf Wildenhues | 29b802a | 2008-12-09 07:23:51 +0100 | [diff] [blame] | 231 | is typically your side, and the part afterwards is typically their side. |
Junio C Hamano | 70a3f89 | 2008-08-31 20:36:32 -0700 | [diff] [blame] | 232 | |
Ralf Wildenhues | 29b802a | 2008-12-09 07:23:51 +0100 | [diff] [blame] | 233 | The default format does not show what the original said in the conflicting |
| 234 | area. You cannot tell how many lines are deleted and replaced with |
| 235 | Barbie's remark on your side. The only thing you can tell is that your |
Junio C Hamano | 70a3f89 | 2008-08-31 20:36:32 -0700 | [diff] [blame] | 236 | side wants to say it is hard and you'd prefer to go shopping, while the |
| 237 | other side wants to claim it is easy. |
| 238 | |
Nguyễn Thái Ngọc Duy | da0005b | 2015-03-11 16:32:45 -0400 | [diff] [blame] | 239 | An alternative style can be used by setting the "merge.conflictStyle" |
Junio C Hamano | 70a3f89 | 2008-08-31 20:36:32 -0700 | [diff] [blame] | 240 | configuration variable to "diff3". In "diff3" style, the above conflict |
| 241 | may look like this: |
| 242 | |
| 243 | ------------ |
| 244 | Here are lines that are either unchanged from the common |
| 245 | ancestor, or cleanly resolved because only one side changed. |
| 246 | <<<<<<< yours:sample.txt |
| 247 | Conflict resolution is hard; |
| 248 | let's go shopping. |
| 249 | ||||||| |
| 250 | Conflict resolution is hard. |
| 251 | ======= |
| 252 | Git makes conflict resolution easy. |
| 253 | >>>>>>> theirs:sample.txt |
| 254 | And here is another line that is cleanly resolved or unmodified. |
| 255 | ------------ |
| 256 | |
Chris Johnsen | dcb1126 | 2009-03-15 06:30:52 -0500 | [diff] [blame] | 257 | In addition to the `<<<<<<<`, `=======`, and `>>>>>>>` markers, it uses |
| 258 | another `|||||||` marker that is followed by the original text. You can |
Junio C Hamano | 70a3f89 | 2008-08-31 20:36:32 -0700 | [diff] [blame] | 259 | tell that the original just stated a fact, and your side simply gave in to |
| 260 | that statement and gave up, while the other side tried to have a more |
| 261 | positive attitude. You can sometimes come up with a better resolution by |
| 262 | viewing the original. |
| 263 | |
| 264 | |
| 265 | HOW TO RESOLVE CONFLICTS |
| 266 | ------------------------ |
| 267 | |
Junio C Hamano | ffb1a4b | 2005-11-28 22:54:30 -0800 | [diff] [blame] | 268 | After seeing a conflict, you can do two things: |
| 269 | |
Ralf Wildenhues | 29b802a | 2008-12-09 07:23:51 +0100 | [diff] [blame] | 270 | * Decide not to merge. The only clean-ups you need are to reset |
Junio C Hamano | ffb1a4b | 2005-11-28 22:54:30 -0800 | [diff] [blame] | 271 | the index file to the `HEAD` commit to reverse 2. and to clean |
Johan Herland | 35d2fff | 2010-11-09 22:49:59 +0100 | [diff] [blame] | 272 | up working tree changes made by 2. and 3.; `git merge --abort` |
| 273 | can be used for this. |
Junio C Hamano | ffb1a4b | 2005-11-28 22:54:30 -0800 | [diff] [blame] | 274 | |
Dan Hensgen | 34ad1af | 2008-08-21 23:32:00 -0400 | [diff] [blame] | 275 | * Resolve the conflicts. Git will mark the conflicts in |
| 276 | the working tree. Edit the files into shape and |
Thomas Rast | 0b444cd | 2010-01-10 00:33:00 +0100 | [diff] [blame] | 277 | 'git add' them to the index. Use 'git commit' to seal the deal. |
Junio C Hamano | ffb1a4b | 2005-11-28 22:54:30 -0800 | [diff] [blame] | 278 | |
Dan Hensgen | 34ad1af | 2008-08-21 23:32:00 -0400 | [diff] [blame] | 279 | You can work through the conflict with a number of tools: |
| 280 | |
Thomas Rast | ca76828 | 2010-01-07 17:49:12 +0100 | [diff] [blame] | 281 | * Use a mergetool. `git mergetool` to launch a graphical |
Dan Hensgen | 34ad1af | 2008-08-21 23:32:00 -0400 | [diff] [blame] | 282 | mergetool which will work you through the merge. |
| 283 | |
Thomas Rast | ca76828 | 2010-01-07 17:49:12 +0100 | [diff] [blame] | 284 | * Look at the diffs. `git diff` will show a three-way diff, |
Jonathan Nieder | 3588cf9 | 2010-01-23 16:48:40 -0600 | [diff] [blame] | 285 | highlighting changes from both the `HEAD` and `MERGE_HEAD` |
| 286 | versions. |
Dan Hensgen | 34ad1af | 2008-08-21 23:32:00 -0400 | [diff] [blame] | 287 | |
Jonathan Nieder | 3588cf9 | 2010-01-23 16:48:40 -0600 | [diff] [blame] | 288 | * Look at the diffs from each branch. `git log --merge -p <path>` |
| 289 | will show diffs first for the `HEAD` version and then the |
| 290 | `MERGE_HEAD` version. |
Dan Hensgen | 34ad1af | 2008-08-21 23:32:00 -0400 | [diff] [blame] | 291 | |
Thomas Rast | ca76828 | 2010-01-07 17:49:12 +0100 | [diff] [blame] | 292 | * Look at the originals. `git show :1:filename` shows the |
Jonathan Nieder | 3588cf9 | 2010-01-23 16:48:40 -0600 | [diff] [blame] | 293 | common ancestor, `git show :2:filename` shows the `HEAD` |
| 294 | version, and `git show :3:filename` shows the `MERGE_HEAD` |
| 295 | version. |
Junio C Hamano | ffb1a4b | 2005-11-28 22:54:30 -0800 | [diff] [blame] | 296 | |
Clemens Buchacher | d504f69 | 2009-10-21 19:21:23 +0200 | [diff] [blame] | 297 | |
| 298 | EXAMPLES |
| 299 | -------- |
| 300 | |
| 301 | * Merge branches `fixes` and `enhancements` on top of |
| 302 | the current branch, making an octopus merge: |
| 303 | + |
| 304 | ------------------------------------------------ |
| 305 | $ git merge fixes enhancements |
| 306 | ------------------------------------------------ |
| 307 | |
| 308 | * Merge branch `obsolete` into the current branch, using `ours` |
| 309 | merge strategy: |
| 310 | + |
| 311 | ------------------------------------------------ |
| 312 | $ git merge -s ours obsolete |
| 313 | ------------------------------------------------ |
| 314 | |
| 315 | * Merge branch `maint` into the current branch, but do not make |
| 316 | a new commit automatically: |
| 317 | + |
| 318 | ------------------------------------------------ |
| 319 | $ git merge --no-commit maint |
| 320 | ------------------------------------------------ |
| 321 | + |
| 322 | This can be used when you want to include further changes to the |
| 323 | merge, or want to write your own merge commit message. |
| 324 | + |
| 325 | You should refrain from abusing this option to sneak substantial |
| 326 | changes into a merge commit. Small fixups like bumping |
| 327 | release/version name would be acceptable. |
| 328 | |
| 329 | |
Jonathan Nieder | a4081ba | 2010-01-23 03:33:37 -0600 | [diff] [blame] | 330 | include::merge-strategies.txt[] |
| 331 | |
Jonathan Nieder | 35e9d63 | 2010-01-23 03:26:57 -0600 | [diff] [blame] | 332 | CONFIGURATION |
| 333 | ------------- |
| 334 | include::merge-config.txt[] |
| 335 | |
Nguyễn Thái Ngọc Duy | da0005b | 2015-03-11 16:32:45 -0400 | [diff] [blame] | 336 | branch.<name>.mergeOptions:: |
Jonathan Nieder | 35e9d63 | 2010-01-23 03:26:57 -0600 | [diff] [blame] | 337 | Sets default options for merging into branch <name>. The syntax and |
| 338 | supported options are the same as those of 'git merge', but option |
| 339 | values containing whitespace characters are currently not supported. |
| 340 | |
Petr Baudis | 3c64314 | 2005-11-01 21:45:55 +0100 | [diff] [blame] | 341 | SEE ALSO |
| 342 | -------- |
Dan McGee | 5162e69 | 2007-12-29 00:20:38 -0600 | [diff] [blame] | 343 | linkgit:git-fmt-merge-msg[1], linkgit:git-pull[1], |
Jonathan Nieder | 483bc4f | 2008-06-30 13:56:34 -0500 | [diff] [blame] | 344 | linkgit:gitattributes[5], |
| 345 | linkgit:git-reset[1], |
| 346 | linkgit:git-diff[1], linkgit:git-ls-files[1], |
| 347 | linkgit:git-add[1], linkgit:git-rm[1], |
| 348 | linkgit:git-mergetool[1] |
Petr Baudis | 3c64314 | 2005-11-01 21:45:55 +0100 | [diff] [blame] | 349 | |
Junio C Hamano | 0f69be5 | 2005-09-09 01:15:47 -0700 | [diff] [blame] | 350 | GIT |
| 351 | --- |
Christian Couder | 9e1f0a8 | 2008-06-06 09:07:32 +0200 | [diff] [blame] | 352 | Part of the linkgit:git[1] suite |