|  | 234 | == I don't see any merge commit == | 
          
            |  | 235 |  | 
          
            |  | 236 | ..you probably either forgot to add the `--no-ff` option when calling the merge (by default, but only if the merge is fast-forward, a normal single-parent commit is created), or somehow your .git/MERGE_HEAD passed away. | 
          
            |  | 237 |  | 
          
            |  | 238 | This means you have your merge commit with lots of conflicts fixed that you want to re-apply. | 
          
            |  | 239 | One idea is to: | 
          
            |  | 240 |  | 
          
            |  | 241 | * save your merge to a patch, say `MERGE.patch` | 
          
            |  | 242 | * reset to a pre-merge state and re-merge | 
          
            |  | 243 | * if you have conflicts, just git-add everything to make git think you solved them, then commit | 
          
            |  | 244 | * revert the (fake) commit and format a patch out of it, say `REVERT.patch` | 
          
            |  | 245 | * reset again to a pre-merge state and again re-merge | 
          
            |  | 246 | * re-git-add everything to mark conflicts solved (even though they aren't), but don't commit this time | 
          
            |  | 247 | * apply `REVERT.patch` then `MERGE.patch` in the index | 
          
            |  | 248 | * the two patches are applied, now you can git-commit. | 
          
            |  | 249 |  | 
          
            |  | 250 | Let's say you applied a merge `M` of `feature_X` into `master`, but you see no merge commit in your history: | 
          
            |  | 251 |  | 
          
            |  | 252 | {{{ | 
          
            |  | 253 | o-------A--------------M  master | 
          
            |  | 254 | \ | 
          
            |  | 255 | C----------D  feature_X | 
          
            |  | 256 | }}} | 
          
            |  | 257 |  | 
          
            |  | 258 | {{{ | 
          
            |  | 259 | #!sh | 
          
            |  | 260 | # Patch your merge commit: | 
          
            |  | 261 | $ git branch | 
          
            |  | 262 | * master | 
          
            |  | 263 | feature_X | 
          
            |  | 264 | $ git format-patch HEAD~ | 
          
            |  | 265 | MERGE.patch | 
          
            |  | 266 |  | 
          
            |  | 267 | # Re-merge | 
          
            |  | 268 | $ git reset --hard A | 
          
            |  | 269 | $ git merge --no-ff feature_X | 
          
            |  | 270 | ... | 
          
            |  | 271 | Automatic merge failed; fix conflicts and then commit the result. | 
          
            |  | 272 |  | 
          
            |  | 273 | # Mark conflicts as solved, without applying changes | 
          
            |  | 274 | $ git add folder1/ folder2/ ... | 
          
            |  | 275 | $ git commit | 
          
            |  | 276 | # let's call it M' | 
          
            |  | 277 |  | 
          
            |  | 278 | # Revert your fake merge | 
          
            |  | 279 | $ git revert -m 1 M' | 
          
            |  | 280 | # let's call this commit rM' | 
          
            |  | 281 |  | 
          
            |  | 282 | # Patch the reversion | 
          
            |  | 283 | $ git format-patch HEAD~ | 
          
            |  | 284 | REVERT.patch | 
          
            |  | 285 | }}} | 
          
            |  | 286 |  | 
          
            |  | 287 | Graphically, this is the current situation: | 
          
            |  | 288 |  | 
          
            |  | 289 | {{{ | 
          
            |  | 290 | o-------A--------------M'----------rM'  master | 
          
            |  | 291 | \            / | 
          
            |  | 292 | C----------D  feature_X | 
          
            |  | 293 | }}} | 
          
            |  | 294 |  | 
          
            |  | 295 | Now we roll-back to a pre-merge state again, then we merge, revert, and apply our initial patch: `(M'+rM'+M) = (M'-M'+M) = M` | 
          
            |  | 296 |  | 
          
            |  | 297 | {{{ | 
          
            |  | 298 | #!sh | 
          
            |  | 299 | # Re-merge | 
          
            |  | 300 | $ git reset --hard A | 
          
            |  | 301 | $ git merge --no-ff feature_X | 
          
            |  | 302 | ... | 
          
            |  | 303 | Automatic merge failed; fix conflicts and then commit the result. | 
          
            |  | 304 |  | 
          
            |  | 305 | # Mark conflicts as solved, without applying changes, but don't commit now | 
          
            |  | 306 | $ git add folder1/ folder2/ ... | 
          
            |  | 307 | # ... now we are @ M', without explicit commit | 
          
            |  | 308 |  | 
          
            |  | 309 | # Apply rM' and M (without commiting) | 
          
            |  | 310 | $ git apply --index REVERT.patch | 
          
            |  | 311 | $ git apply --index MERGE.patch | 
          
            |  | 312 | }}} | 
          
            |  | 313 |  | 
          
            |  | 314 | Finally, we have our original merge, with true conflicts solution, but as a merge commit: | 
          
            |  | 315 |  | 
          
            |  | 316 | {{{ | 
          
            |  | 317 | o-------A--------------M  master | 
          
            |  | 318 | \            / | 
          
            |  | 319 | C----------D  feature_X | 
          
            |  | 320 | }}} | 
          
            |  | 321 |  | 
          
            |  | 322 |  |