Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $ git mergetool --tool-help
- 'git mergetool --tool=<tool>' may be set to one of the following:
- araxis
- meld
- vimdiff
- Opens vim with a 4 windows layout distributed in the following way:
- ------------------------------------------
- | | | |
- | LOCAL | BASE | REMOTE |
- | | | |
- ------------------------------------------
- | |
- | MERGED |
- | |
- ------------------------------------------
- "LOCAL", "BASE" and "REMOTE" are read-only buffers showing the contents of the
- conflicting file in a specific git commit ("commit you are merging into",
- "common ancestor commit" and "commit you are merging from" respectively)
- "MERGED" is a writable buffer where you have to resolve the conflicts (using the
- other read-only buffers as a reference). Once you are done, save and exit "vim"
- as usual (":wq") or, if you want to abort, exit using ":cq".
- You can change the windows layout used by vim by setting configuration variable
- "mergetool.vimdiff.layout" which accepts a string where these separators have
- special meaning:
- - ";" is used to "open a new tab"
- - "-" is used to "open a new vertical split"
- - "|" is used to "open a new horizontal split"
- Let's see some examples to undertand how it works:
- * layout = "(LOCAL | BASE | REMOTE) - MERGED"
- This is exactly the same as the default layout we have already seen.
- * layout = "LOCAL | MERGED | REMOTE"
- If, for some reason, we are not interested in the "BASE" buffer.
- ------------------------------------------
- | | | |
- | | | |
- | LOCAL | MERGED | REMOTE |
- | | | |
- | | | |
- ------------------------------------------
- * layout = "MERGED"
- Only the "MERGED" buffer will be shown. Note, however, that all the other
- ones are still loaded in vim, and you can access them with the "buffers"
- command.
- ------------------------------------------
- | |
- | |
- | MERGED |
- | |
- | |
- ------------------------------------------
- * layout = "LOCAL* | REMOTE"
- When "MERGED" is not present in the layout, you must "mark" one of the
- buffers with an asterisk. That will become the buffer you need to edit and
- save after resolving the conflicts.
- ------------------------------------------
- | | |
- | | |
- | | |
- | LOCAL | REMOTE |
- | | |
- | | |
- | | |
- ------------------------------------------
- * layout = "(LOCAL | BASE | REMOTE) - MERGED; BASE | LOCAL; BASE | REMOTE"
- Three tabs will open: the first one is a copy of the default layout, while
- the other two only show the differences between "BASE" and "LOCAL" and
- "BASE" and "REMOTE" respectively.
- ------------------------------------------
- | <TAB #1> | TAB #2 | TAB #3 | |
- ------------------------------------------
- | | | |
- | LOCAL | BASE | REMOTE |
- | | | |
- ------------------------------------------
- | |
- | MERGED |
- | |
- ------------------------------------------
- ------------------------------------------
- | TAB #1 | <TAB #2> | TAB #3 | |
- ------------------------------------------
- | | |
- | | |
- | | |
- | BASE | LOCAL |
- | | |
- | | |
- | | |
- ------------------------------------------
- ------------------------------------------
- | TAB #1 | TAB #2 | <TAB #3> | |
- ------------------------------------------
- | | |
- | | |
- | | |
- | BASE | REMOTE |
- | | |
- | | |
- | | |
- ------------------------------------------
- * layout = "(LOCAL | BASE | REMOTE) - MERGED; BASE | LOCAL; BASE | REMOTE; (LOCAL - BASE - REMOTE) | MERGED"
- Same as the previous example, but adds a fourth tab with the same
- information as the first tab, with a different layout.
- ---------------------------------------------
- | TAB #1 | TAB #2 | TAB #3 | <TAB #4> |
- ---------------------------------------------
- | LOCAL | |
- |---------------------| |
- | BASE | MERGED |
- |---------------------| |
- | REMOTE | |
- ---------------------------------------------
- vimdiff1
- Same as 'vimdiff' using this layout: "LOCAL* | REMOTE"
- This will probably be deprecated in the future. Please use "vimdiff" and
- manually set the "mergetool.vimdiff.layout" configuration variable instead.
- vimdiff2
- Same as 'vimdiff' using this layout: "LOCAL | MERGED | REMOTE"
- This will probably be deprecated in the future. Please use "vimdiff" and
- manually set the "mergetool.vimdiff.layout" configuration variable instead.
- vimdiff3
- Same as 'vimdiff' using this layout: "MERGED"
- This will probably be deprecated in the future. Please use "vimdiff" and
- manually set the "mergetool.vimdiff.layout" configuration variable instead.
- user-defined:
- vimdiff4.cmd vim -f -d -c "4wincmd w | wincmd J | tabnew | edit $LOCAL | vertical diffsplit $BASE | tabnew | edit $REMOTE | vertical diffsplit $BASE | 2tabprevious" "$LOCAL" "$BASE" "$REMOTE" "$MERGED"
- The following tools are valid, but not currently available:
- bc
- bc3
- bc4
- codecompare
- deltawalker
- diffmerge
- diffuse
- ecmerge
- emerge
- examdiff
- guiffy
- gvimdiff
- Same as 'vimdiff' but opens 'gvim' instead (which uses a graphical toolkit for
- opening its own window).
- The desired layout can be set with configuration variable
- "mergetool.gvimdiff.layout"
- gvimdiff1
- Same as 'gvimdiff' using this layout: "LOCAL* | REMOTE"
- This will probably be deprecated in the future. Please use "gvimdiff" and
- manually set the "mergetool.gvimdiff.layout" configuration variable instead.
- gvimdiff2
- Same as 'gvimdiff' using this layout: "LOCAL | MERGED | REMOTE"
- This will probably be deprecated in the future. Please use "gvimdiff" and
- manually set the "mergetool.gvimdiff.layout" configuration variable instead.
- gvimdiff3
- Same as 'gvimdiff' using this layout: "MERGED"
- This will probably be deprecated in the future. Please use "gvimdiff" and
- manually set the "mergetool.gvimdiff.layout" configuration variable instead.
- kdiff3
- nvimdiff
- Same as 'vimdiff' but opens 'neovim' instead (which is a fork of the original
- 'vim' 'focused on extensibility and usability' according to their authors)
- The desired layout can be set with configuration variable
- "mergetool.nvimdiff.layout"
- nvimdiff1
- Same as 'nvimdiff' using this layout: "LOCAL* | REMOTE"
- This will probably be deprecated in the future. Please use "nvimdiff" and
- manually set the "mergetool.nvimdiff.layout" configuration variable instead.
- nvimdiff2
- Same as 'nvimdiff' using this layout: "LOCAL | MERGED | REMOTE"
- This will probably be deprecated in the future. Please use "nvimdiff" and
- manually set the "mergetool.nvimdiff.layout" configuration variable instead.
- nvimdiff3
- Same as 'nvimdiff' using this layout: "MERGED"
- This will probably be deprecated in the future. Please use "nvimdiff" and
- manually set the "mergetool.nvimdiff.layout" configuration variable instead.
- opendiff
- p4merge
- smerge
- tkdiff
- tortoisemerge
- winmerge
- xxdiff
- Some of the tools listed above only work in a windowed
- environment. If run in a terminal-only session, they will fail.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement