That's good news for Windows users, their development tools really seem to be getting simpler and better lately. I'm a huge fan of SourceTree in general.
I formerly thought, "why would anyone want to use a GUI for Git? It's just a crutch so you don't have to use the CLI."
Then I started actually using SourceTree a bit. I've changed my tune considerably. I think there's great benefit to using a quality GUI for Git now even though you still need to use the CLI.
First, I became stuck in this intermediate user hell where I could do all the basic stuff but didn't know the commands or quite how to get it done. SourceTree allows a very good way to get that done right now with the understanding that you just executed a command under the surface. It allows to explore the capabilities of Git a little more than the CLI would and lets you punch over your weight in the meantime.
Second, I think having a high quality graphical representation of your Git tree in front of you helps you understand the structure of your tree and enables you to make more informed, better choices on the structure it takes.
Third, I like using it for pushes, pulls, and merges simply because this is the one place in Git I tend to make a typo and screw up data. Generally that's no big deal but once in a while you push something really dumb onto the origin remote and then feel really stupid about it. If it's yours one forced push and you're good but if it's collaborative, you can cause someone a major headache.
I do wish it were open source so I could rely on it going forward a little more but clearly Atalassian has a decent business model and they view this app as a great tool into it. It even has a nice cataloguing feature where you can throw in your Github and Bitbucket usernames and see all your online repos in a list. I find this nice when needing all my git stuff on a different computer than my primary.
> I formerly thought, "why would anyone want to use a GUI for Git? It's just a crutch so you don't have to use the CLI."
Honestly, I can't stand Git on the command line and always interact with it through a GUI. I feel like source control in general is unnecessarily complicated, but Git even more so.
Agreed. I've often made a point among colleagues that source control, because it's built by programmers for use nearly exclusively by programmers, has enjoyed very little user interface attention through its lifespan. Unlike other applications that have experimented and evolved their user interface relatively rapidly, source control like build tools, is an area where there is little demand for UI improvement (and hence, little value in doing so). Putting aside proprietary and very expensive source control systems, the open source options seem to align to the way we used computers generally in the following decades.
1970s: CVS
1980s: Subversion
1990s: Git (shifting Git to the 1990s even aligns it with the batch of distributed OS research from that era).
This is especially reductive and somewhat mean-spirited, but my point is that using Git gives me the feeling of using other types of applications from the 1990s. Source control remains stuck in an era where computer programs appeared to be designed in part to appeal to the curiosity of developers who take pride in mastering complex systems, not for being eminently usable.
When I say Git "feels 1990s" a retort is that I am a Git hater and should just use Perforce or some other crummy commercial product. That misses the point. It just feels like a tool from the 1990s, which to be clear, feels a heck of a lot better than a tool from the 1980s. But I live in the 2010s. I want a source control system that does its job and gets out of my way. Again, to be reductive and mean, just like build tools, source control systems are a time-sink that captivate the attention of people who enjoy fussing with tools. It's not that I don't like Git versus its real-world contemporaries, but I want Git + 20 years.
Before git (and DVCS in general) every company had a source control manager. You could get a degree (and presumably still can) in revision control theory. This was necessary then because a developer couldn't completely grock it and get real development done at the same time. Today I don't know if any git shops that have a full-time source control manager.
So, if the worst thing about this generation of source control systems is an unflattering UI... I think we have awhile until the next generation takes over.
The UI is an important problem, but also the needless complexity and leaky abstractions. This isn't limited to version control either, but is pervasive in all programming tools (IDEs/editors, build systems, programming languages, platforms, etc.)
This is caused by extreme conservatism and dogma.
"GUIs are for noobs, CLI is better"
"Everything should be text like the Unix gods intended" (code in particular)
"Keyboard is faster than mouse"
"Autocomplete? That just causes you not to learn anything"
"Who needs semantic code navigation when you have grep?"
"WYSIWYG? Use markdown or latex."
"What's wrong with the web? This canvas API is so cool."
Wait.. we have a senior source control manager and we are using TFS. Sometimes clicking through the gui based wizards to merge two branches is to difficult for C# devs these days. His expertise in right clicking is truly remarkable. I fear for the day we move to distributed source control.
I recognize that Git is complicated, but what part of the complexity is unnecessary? It seems to me that Git is complicated because version control is inherently complex.
I'll second this as well; I haven't used SourceTree, for me it's magit mode in Emacs, but having a structured interface to git turned out to be much more useful than an interface to CVS would have been. In particular, it's resulted in much more fine-grained commits and branches for me.
The standard git-gui and gitk tools, bundled with git, are much better than nothing, but at the same time not much to look at compared to some other GUIs. It's a shame that these tools have seen almost no considerable improvement in the last few years, as a good cross-platform GUI bundled with git would certainly be great. Perhaps that is due to the fact that they're written in Tcl/Tk, so the codebase is not easily approachable.
I've tried a few third-party GUIs such as SmartGit (now SmartGitHg), git-cola and Git Extensions, but they all lacked in one area or another and drove me back to the standard ones. Looking forward to trying SourceTree.
Looks like there are a few people in the same boat as myself.
Was a cli purist but caved on a complicated merge. Actually seeing the commit graph was incredibly helpful. Later on I discovered that Command-Clicking two commits anywhere in the tree showed their full diff. I haven't gone back to the terminal except for the straightforward commit/fetch/branch creation commands.
Glad to see that Windows users will be getting some level of access to this gem :)
Despite some people in my office proclaiming themself "too hardcore" to use a git interface, I believe SourceTree is fantastic. When I used to work with windows, I used TortoiseGit -- which is decent, but lacks some of the more advanced niceties.
Committing portions or single lines of a file, remembering to push that pesky submodule, all becomes an order of magnitude easier and quicker with a decent GUI. The response to "but it can't do everything, so I'll stick to CLI", is simple. The 5% of the time the GUI doesn't cover exactly what you need, the terminal is sitting right there for you... it doesn't disable it.
git gui allows you to do most of the advanced operations you mentioned (partial commits), and it has the advantage of coming preinstalled with git itself, which means that if you master that tool, you can find your way in pretty much every other situation (new machine, deployment server, etc..)
I really liked SourceTree when I tried it, but my god is it slow on my iMac at work. It's still useful for complicated operations I don't want to (or know how to) do on the CLI, but it is not fast enough to be my main version control interface.
I was introduced to SourceTree for Mac when I started at my new shop and I've gotta say that I love it. I don't consider it a crutch so much as a part of a faster workflow. I enjoy the ability to quickly see diffs, to pick and choose what files I want to commit with just a click+drag, and generally moving through simple git things (push, pull, commit, merge, rebase, resolve merge conflicts) with the click of a button or a keyboard shortcut.
It's not as powerful as using CLI (you can't perform an interactive rebase, for example) but for the most part it fits my workflow of branching, merging, and pull requesting pretty nicely.
An interactive rebase is coming in the next version of SourceTree for Mac (~1m out)... the Windows version will have the functionality a few months later.
Cheers, Justen -- Bitbucket and SourceTree product manager
So git was developed specifically for development of the Linux kernel, but Linux users are the only people who only get GUI clients that look like warmed feaces?
SmartGitHg is free for non-commercial use. I've only used it from Windows, but it supports Linux and Mac as well. I've been enjoying it, but I am by no means an advanced user. I just started working with branches, and as far as I can tell, the branch management SmartGitHg offers seems excellent. I'd love to hear what someone more experienced thinks about it, though.
I would love to see this for Linux as well. There is a post on the SourceTree site about asking for SourceTree for Windows/Linux, maybe we need one just for linux now?
Our main git repo at work is huge (in just about every aspect: size in megabytes, number of commits, number of branches, number of tags, etc) and SourceTree is incredibly slow. 20 minutes later I'm still waiting for SourceTree to load the main view for the repo. So is gitk on OSX (which launches Wish). Somehow IntelliJ has no problem with our repo and its git related functionality is snappy as can be.
Sourcetree having the git-flow model built-in now is great - I'd really hoped tower would have added this, but they seem to have stopped any major feature additions. I've moved to sourcetree for most day to day work and will be happy to point Windows-using colleagues to it soon.
I am not the biggest fan of SourceTree's UI, but the killer feature that makes it really useful for me is that it makes it pretty easy to stage specific lines of a file or to discard some lines. They've done a pretty good job with that and I use those features all the time now.
I have been a SourceTree customer since before the Atlassian acquisition. I made some feature requests and they were completed quite promptly and with no hassles. Since then I had the good luck to meet some of the Atlassian security team in Sydney, who also put my faith in their suite.
The biggest thing I use SourceTree for over command-line git is cherry-picking bits of different versions of a file to merge. Also, if you have loads of repos it can auto-announce changes on the remotes when you open it, which saves a lot of command line hunting to stay on top of things.
I use SourceTree as a Mercurial GUI on a Mac and it's been awesome. I bought it back then when you had to pay for it, and it was worth every penny. Developer behind the app is also super-responsive.
In my experience tortoise does not refresh its view as changes are made, so if you forget to push the refresh button, you may checkin too few files. Subjectively, tortoise also feels clunky compared to ST.
I would also much prefer to use the same client on Windows and Mac, as I'm using both.
Interesting the way it has circled back around. ISTR it was deliberately started as a paid mac-only app by Steve Streeting / sinbad after he switched to macos and decided trying to do the added services thing wasn't his favourite, after years of running a consultancy service for the (primarily win32) open-source project he had started, ogre3d.org.
I expect we'll see more of this kind of stuff, especially something from GitHub at somepoint. Now that Microsoft is going full-out with Git support in VS, you can bet there is going to be some top-notch support. I love Git Extensions, and SourceTree looks great, but the appeal of being able to have VS with work item, build, and Git all together is pretty strong.
GitHub for Windows is not really comparable to Git Extensions or other full Git tools. It seems like it's point is just to help nudge Windows users onto GitHub. I imagine GitHub will revamp this position, especially with respect to their bug tracking integration and so on.
Excellent. This looks especially well suited to my use-case.
However, I'm already on board with Github for Windows and unless that causes me some unusual pain at some point, I'm loathe to bother changing just for the sake of changing.
A big thank-you to both firms for investing the time to make Git more "functional" and less "technical entertainment."
In my experience, GitHub for Windows is great for basic commits, and that's about it... Good luck doing a merge (or god forbid you actually have a conflict). It's fine if you're a single user, but the moment you're working with other people you need to drop down into the CLI a lot (which is fine, but not ideal). I do like using it as an easy way to get an overview of all my repos and a quick way to link into the CLI for each repo, and to quickly check over commits.
So far we're using Git Extensions in our deployment here, but this looks promising.
Signed up for the beta. Most of our users unfortunately have a dislike for everything CLI (.. =( ..), so in this environment it's either Git Extensions, the upcoming VS 2012 native client or .. maybe this project.
I love SourceTree for the easy visualization of progress of branches as they progress. Using git flow at work, SourceTree makes the whole git experience better and more visual.
Now my co-workers will finally have a decent Windows git app.
Wonderful news. For the occasional contributors on my team, I can't tell you what a pain it is for them to remember CLI switches and for me to have to constantly remind them. I love SourceTree on the Mac.
I formerly thought, "why would anyone want to use a GUI for Git? It's just a crutch so you don't have to use the CLI."
Then I started actually using SourceTree a bit. I've changed my tune considerably. I think there's great benefit to using a quality GUI for Git now even though you still need to use the CLI.
First, I became stuck in this intermediate user hell where I could do all the basic stuff but didn't know the commands or quite how to get it done. SourceTree allows a very good way to get that done right now with the understanding that you just executed a command under the surface. It allows to explore the capabilities of Git a little more than the CLI would and lets you punch over your weight in the meantime.
Second, I think having a high quality graphical representation of your Git tree in front of you helps you understand the structure of your tree and enables you to make more informed, better choices on the structure it takes.
Third, I like using it for pushes, pulls, and merges simply because this is the one place in Git I tend to make a typo and screw up data. Generally that's no big deal but once in a while you push something really dumb onto the origin remote and then feel really stupid about it. If it's yours one forced push and you're good but if it's collaborative, you can cause someone a major headache.
I do wish it were open source so I could rely on it going forward a little more but clearly Atalassian has a decent business model and they view this app as a great tool into it. It even has a nice cataloguing feature where you can throw in your Github and Bitbucket usernames and see all your online repos in a list. I find this nice when needing all my git stuff on a different computer than my primary.