What's the best visual merge tool for Git?

What’s the best tool for viewing and editing a merge in Git? I’d like to get a 3-way merge view, with “mine”, “theirs” and “ancestor” in separate panels, and a fourth “output” panel.

Also, instructions for invoking said tool would be great. (I still haven’t figure out how to start kdiff3 in such a way that it doesn’t give me an error.)

  • git: having 2 push/pull repos in sync (or 1 push/pull and 1 pull in sync)
  • Git Error: Couldn't find program: u'bash'
  • git-svn: Keep single merge commit after svn rebase
  • YouCompleteMe can't autocomplete
  • Git's blob data and diff information
  • Rename multiple names and emails in a single pass of git-filter-branch
  • My OS is Ubuntu.

  • funny refname error when creating a new remote branch
  • Git how to revert a commit but remember the work?
  • Jenkins Git UnknownHostKey
  • error: The following untracked working tree files would be overwritten by checkout
  • error: git was not found - installing laravel with composer windows
  • Unable to connect to github.com on push and pull
  • 16 Solutions collect form web for “What's the best visual merge tool for Git?”

    Meld is a good diff/merge tool.

    Here’s how to install it on:

    • Ubuntu
    • Mac
    • Windows: “The recommended version of Meld for Windows is the most recent release, available as an MSI from http://meldmerge.org

    You can configure your own merge tool to be used with “git mergetool“.

    Example:

      git config --global merge.tool p4merge
      git config --global mergetool.p4merge.cmd p4merge '$BASE $LOCAL $REMOTE $MERGED'
      git config --global mergetool.p4merge.trustExitCode false
    

    And while you are at it, you can also set it up as your difftool for “git difftool“:

      git config --global diff.tool p4merge
      git config --global difftool.p4merge.cmd p4merge '$LOCAL $REMOTE'
    

    Note that in Unix/Linux you don’t want the $BASE to get parsed as a variable by your shell – it should actually appear in your ~/.gitconfig file for this to work.

    Beyond Compare 3, my favorite, has a merge functionality in the Pro edition. The good thing with its merge is that it let you see all 4 views: base, left, right, and merged result. It’s somewhat less visual than P4V but way more than WinDiff. It integrates with many source control and works on Windows/Linux. It has many features like advanced rules, editions, manual alignment…

    The Perforce Visual Client (P4V) is a free tool that provides one of the most explicit interface for merging (see some screenshots). Works on all major platforms. My main disappointement with that tool is its kind of “read-only” interface. You cannot edit manually the files and you cannot manually align.

    PS: P4Merge is included in P4V. Perforce tries to make it a bit hard to get their tool without their client.

    SourceGear Diff/Merge may be my second free tool choice. Check that merge screens-shot and you’ll see it’s has the 3 views at least.


    Meld is a newer free tool that I’d prefer to SourceGear Diff/Merge: Now it’s also working on most platforms (Windows/Linux/Mac) with the distinct advantage of natively supporting some source control like Git. So you can have some history diff on all files much simpler. The merge view (see screenshot) has only 3 panes, just like SourceGear Diff/Merge. This makes merging somewhat harder in complex cases.

    PS: If one tool one day supports 5 views merging, this would really be awesome, because if you cherry-pick commits in Git you really have not one base but two. Two base, two changes, and one resulting merge.

    My favorite visual merge tool is SourceGear DiffMerge

    • It is free.
    • Cross-platform (Windows, OS X, and Linux).
    • Clean visual UI
    • All diff features you’d expect (Diff, Merge, Folder Diff).
    • Command line interface.
    • Usable keyboard shortcuts.

    User interface

    I hear good things about kdiff3, seems to be between that and meld (which another poster already suggested).

    You can try P4Merge.

    Visualize the differences between file versions with P4Merge. Resolve conflicts that result from parallel or concurrent development via color coding.

    The features includes:

    • Highlight and edit text file differences
    • Choose to include or ignore line endings or white spaces
    • Recognize line-ending conventions for Windows (CRLF), Mac (CR), and Unix (LF)
    • Use command-line parameters and launch from non-Perforce applications
    • Display line numbers when comparing and merging files
    • Exclude files that are modified, unique, or unchanged
    • Filter files by name or extension
    • Organize modified assets in familiar file/folder hierarchy
    • Compare JPEG, GIF, TIFF, BMP, and other file formats
    • Extend using the Qt API
    • Overlay images or display side-by-side
    • Highlight differences on overlaid images

    vimdiff

    Once you have have learned vim (and IMHO you should), vimdiff is just one more beautiful little orthogonal concept to learn. To get online help in vim:

    :help vimdiff
    

    If you’re stuck in the dark ages of mouse usage, and the files you’re merging aren’t very large, I recommend meld.

    Diffuse is my favourite but of course I am biased. 🙂 It is very easy to use:

    $ diffuse "mine" "output" "theirs"
    

    Diffuse is a small and simple text merge tool written in Python. With Diffuse, you can easily merge, edit, and review changes to your code. Diffuse is free software.

    Araxis Merge http://www.araxis.com/
    I’m using it on Mac OS X but I’ve used it on windows… it’s not free… but it has some nice features… nicer on windows though.

    If you are just looking for a diff tool beyond compare is pretty nice: http://www.scootersoftware.com/moreinfo.php

    You can change the tool used by git mergetool by passing git mergetool -t=<tool> or --tool=<tool>. To change the default (from vimdiff) use git config merge.tool <tool>.

    IntelliJ IDEA has a sophisticated merge conflict resolution tool with the Resolve magic wand, which greatly simplifies merging:

    Source: https://blog.jetbrains.com/dotnet/2017/03/13/rider-eap-update-version-control-database-editor-improvements/

    You can install ECMerge diff/merge tool on your Linux, Mac or Windows. It is pre-configured in Git, so just using git mergetool will do the job.

    If you do use visual studio, Team Explorer built in tool is a very nice tool to resolve git merge conflicts.

    So for the git merge, you can try:

    • DiffMerge to visually compare and merge files on Windows, OS X and Linux.

      DiffMerge

    • Meld, is a visual diff and merge tool.

      Meld is a visual diff and merge tool

    • KDiff3, a diff and merge program), which compares or merges 2 or 3 text input files/dirs.
    • opendiff (part of Xcode Tools on macOS), a command line utility which launches the FileMerge application from Terminal to graphically compare files or directories, including merging.

    gitx http://gitx.frim.nl/

    Some bugs when working with large commit sets but great for browsing through changes and picking different changes to stage and then commit.

    Git Baby is a git and github fan, let's start git clone.