When it comes to version control, I am a Subversion fan through and through. But this old dog can be taught new tricks, and Git is the bright and shining star of the version control systems available now, and with some pretty good reason. Unfortunately, I'm lazy and used to Subversion, and currently use Git quite rarely, so I didn't want to invest the time to figure out the command line client. If and when I decide to start using Git more seriously, then I'll make that investment; until then I decided to hunt for a nice point-and-click Git client.
Git is a command line tool, the best way to learn how it works - and how to get the most out of it - is to use it as such. There is a steeper learning curve involved, but once you're used to it, you'll unlock the full power of git. Meld, P4Merge, and Beyond Compare are probably your best bets out of the 10 options considered. 'Free and open source' is the primary reason people pick Meld over the competition. This page is powered by a knowledgeable community that helps you make an informed decision.
Primary players
As I looked, I found that there are currently three big players in the Git GUI space on the Mac right now: SmartGit, Tower, and SourceTree. If you're on a budget and don't mind using a non-Mac-like java program, SmartGit is worth looking at. For use in a commercial environment, it will set you back $69. It's the most expensive of the three; however, if you use it for non-commercial use, it's free. Tower will set you back $59 and SourceTree is a little cheaper at $55.
- Git for Windows & Mac. Wield the power of Git and Mercurial on the two most popular operating systems.
- The *easiest GIT client and most optimized for Mac OS X in my opinion is probably Tower. Its not the most powerful but the interface is the easiest to use. Another one i like is git-gui.
- A fast and lightweight git client for Mac with Finder integration. See a file's git status directly in Finder with descriptive icon badges. Execute numerous git operations directly in Finder using customizable contextual and/or toolbar item menu.
- The new native Extend your GitHub workflow beyond your browser with GitHub Desktop, completely redesigned with Electron. Get a unified cross-platform experience that’s completely open source and ready to customize.
I played with SmartGit briefly and I really didn't like it. It seemed clunky and I found the UI to be confusing and very unlike my other GUI VCS tool, Cornerstone (for Subversion), so I can honestly say I didn't give it much of a chance. I really didn't enjoy using it. Comparing Tower to SourceTree was more interesting because they are very close in price, and they are both very obviously native Mac applications with the good looks to prove it. The UI of Tower, however, struck me as being more like Cornerstone and a little easier to use, so after brief usage between the two, I opted for Tower. Tower has a 30-day trial, and SourceTree has a 21-day trial so you can compare them for yourself.
Tower
While aesthetics are important to most Mac users, the look of Tower isn't entirely what sold me on it. Tower is a really solid front-end to the command line git program. It offers all the features necessary to work with Git: branching, tagging, merging, and easily working with remote repositories. Tower largely makes this a drag and drop affair. You can drag a remote repository branch onto a local branch and merge the changes into it. You can also easily create a new branch or tag from any commit on an existing branch from the history browser.
Click image to enlarge.
The repository viewer is both useful and annoying. Hitting Command+D will take you to the repository dashboard which lists the various defined repositories. Here you can see how many local uncommitted changes you have, and how many changes from upstream that you have not pulled in. Unfortunately, Tower only lets you work with one repository at a time and switching between repositories requires a visit to the dashboard or using the Repositories menu item to select from recently opened repositories. This seems like an extra step, especially when coming from Cornerstone that has a sidebar specifically to list repositories, showing the same needed/uncommitted changes that Tower's dashboard does. The dashboard idea would work, if it allowed you to have more than one window open — I could easily like the idea of one repository per window if it allowed you to have more than one window open at a time. One nice bit of integration with Tower is its built-in support for both Github and Beanstalk. Provide Tower your credentials for either service, and you can create and clone repositories on them easily.
Tower also makes it easy to stage (see image below), by selecting specific files, those which will go into any given commit. You can even break this down further by staging particular changed parts. For instance, if you have a file with two changes in it, but only want to commit one of the changes, you can do this in the browse view by looking at the Unstaged changes and mousing over to the left side of the view and selecting which chunks you want to commit. You can also adjust the granularity of the chunks using the Diff Tool, making the chunks bigger or smaller.
Click image to enlarge.
I do wish that Tower had built in support for Git's svn support, however. This is a glaring feature omission that I would like to see in an upcoming version to really make this a solid application. SourceTree has this ability, which gives it a leg up on Tower in the functionality department. Other Subversion users, or users who have to deal with a Subversion repository but want to take advantage of Git's many features, would sorely appreciate this feature.
All in all, Tower is a great Git client. It's still a new-comer to the Mac, but it makes using Git very easy, despite a few missing features. The developers are responsive, however, and the updates are frequent. The 30-day trial should be sufficient to determine whether Tower is the right Git client for you.
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.)
My OS is Ubuntu.
the Tin Manclosed as off-topic by Martijn Pieters♦Nov 27 '18 at 21:14
This question appears to be off-topic. The users who voted to close gave this specific reason:
- 'Questions asking us to recommend or find a book, tool, software library, tutorial or other off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.' – Martijn Pieters
18 Answers
Meld is a diff/merge tool.
Here's how to install it on:
- 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:
And while you are at it, you can also set it up as your difftool for 'git difftool
':
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.
the Tin ManMy 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.
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:
This question covers how to use it: How do I use vimdiff to resolve a conflict?
If you're stuck in the dark ages of mouse usage, and the files you're merging aren't very large, I recommend meld.
Ciro Santilli 新疆改造中心996ICU六四事件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
IntelliJ IDEA has a sophisticated merge conflict resolution tool with the Resolve magic wand, which greatly simplifies merging:
niutechniutechDiffuse is my favourite but of course I am biased. :-) It is very easy to use:
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.
kenorbAraxis Merge http://www.araxis.com/mergeI'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.
ClintmClintmIf you are just looking for a diff tool beyond compare is pretty nice: http://www.scootersoftware.com/moreinfo.php
Nathan FegerNathan FegerYou 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>
.
So for the git merge, you can try:
DiffMerge to visually compare and merge files on Windows, OS X and Linux.
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.
I've tried a lot of the tools mentioned here and none of them have quite been what I'm looking for.
Personally, I've found Atom to be a great tool for visualizing differences and conflict resolution/merging.
As for merging, there aren't three views but it's all combined into one with colored highlighting for each version. You can edit the code directly or there are buttons to use whichever version of that snippet you want.
I don't even use it as an editor or IDE anymore, just for working with git. Clean UI and very straight-forward, plus it's highly customizable.
You can start it from the command line and pass in a single file you want to open to, or add your project folder (git repo).
- I would also recommend project-manager as a very convenient way to navigate between projects without filling up your tree view.
The only problem I've had is refreshing -- when working with large repositories atom can be slow to update changes you make outside of it. I just always close it when I'm finished, and then reopen when I want to view my changes/commit again. You can also reload the window with ctrl+shift+f5, which only takes a second.
And it's free of course.
StyxTop Git Gui For Mac
I use different tools for merge and compare:
Fist could be called by:
Second is called when you use git mergetool
.
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.
Best Git Tool For Mac
If you do use visual studio, Team Explorer built in tool is a very nice tool to resolve git merge conflicts.
CharithCharithgitx 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.