SourceTree went downhill after the last major UI overhaul and never really recovered. I used to love it for more involved commits (picking apart lines and hunks, etc), but now it's slow and clunky, even on nice hardware.
I use TortoiseGit on Windows because working with hundreds of repos via the file browser seems more natural to me. Standalone git clients cause too much friction when working with lots of repos in my opinion. They get cluttered with a huge list of repos that I have to organize separately from how they are already organized on my file-system.
With TortoiseGit, when I find a git repo in the file-system and want to start working with it, I don't have to start another program, I can just activate the file browser's context menu with a single keystroke and then I can instantly see all of the Git commands that I normally use. I hardly even have to look at the list of commands though because the next keystroke is usually to hit the letter of the command that I want: (M)erge, (C)ommit, S(w)itch/Checkout, (L)og, etc... because you can customize the context menu to show the most useful commands.
(Disabling overlay icons in TortoiseGit is also a good idea. I typically just delete their registry entries via SysInternals/Autoruns.)
The main thing I like about SourceTree is that it makes it easy to stage 'hunks', or select lines to stage. I also like that (as with UIs in general) it makes it a bit harder to make mistakes (by, for example, typing the wrong flag on the command line).
But it's become unbearably slow. I really wish they'd fix this.
Do you know about `git add -p`? That allows you to stage hunks or lines interactively in the terminal. Press `s` to split a hunk, `y`/`n` to stage or not stage.
I was aware there was something similar on the command line, but hadn't explored the details. This doesn't sounds as convenient as (a hypothetical responsive) SourceTree, but thanks for the pointers.
I'm finding I work well with TortoiseHG. I've tried SourceTree but haven't seen any advantage to it. Is there something special which might make it worth learning?
I feel like SourceTree actually only maps every Git command with a button, nothing more.
Contrast this with Github for Windows/Github for Mac. These applications are trying to make getting startet with Git easy. If you're using Git with a GUI, that's the way to go, not with a toolbar full of obscure buttons.
Yes, but you can do a lot more with SourceTree than with Github app (last time I tried GH, anyway). SourceTree allows you to do some pretty involved things, and because of that, it has to be a bit "closer to the metal". It's still very easy to do the basics IMO, but you do need to know a bit more of git terminology, etc.
Different target markets, IMO.
I don't know many serious devs that use the GH app, to be honest (because of its simplicity).
This is true - while mentoring at McHacks last weekend, I've seen more high schoolers and undergrads using GitHub via the app with a very basic understanding of how it works; some making sole use of 'Sync' button.
Once you're experienced and you need to use all the "advanced" features of git, SourceTree makes it easier to do so without having to remember every correct syntax without the fear of doing something fatal to your working commit (before pushing it).
EDIT: Not to mention, the integration with git-flow is just amazing for someone who wants a set work flow (pun not intended) and naming convention without the extra overhead of thinking about how to manage it.
Anyone more than the simplest app with only one developer will quickly require more than what the GitHub app provides. Whatever issues you run into, when you Google and you haven't learned git, you'll have no clue. I like the mapping of git commands: I can use the CLI, but I have a tool that makes that workflow faster, rather than hide it from me because it's too hard.
However, for a tool that lets you quickly commit and push, which is what the Github app is ideal for, Gitbox is very nice (Mac only however).
SourceTree is that app: you know how git works but you don't want to fiddle with CLI commands and text output limitations. 99,5% of the everyday workflow is covered by a nice GUI.
Alas atlassian decided to go after the "Github App - no clue of git" population by "simplifying" the UI in 1.9. It's my impression that that move backfired hard in the existing SourceTree user-base.
To be fair, I haven't used 1.9. These days I'm mostly in Tower, which felt like SourceTree with some added features (the way it does stashing is pretty nice)
I find Sourcetree to be a pretty great product, with some negative marks here and there. I use it on W7 and OSX and find the "tabbed" interface of Windows versus the separate windows of OSX much easier to work with, especially on large products.
Some issues I have:
- The app does have some lag at times. I really wish the app would update with local changes and remote changes much faster. Commits can also take some time.
- I know how to use the application, but it could really use some better explanation/help around some features. For example, how to set up SSH keys and how branch/merge/stash/tag work. This would make Sourcetree much easier to learn for new users.
I do find SourceTree to be an important part of my toolset. For minor commits and status I use the command line, but whenever I need to work on something important on a large project I like the overview a GUI can give. Especially when I decide to juggle razor blades with interactive rebases and cherry picks. Though I still have to dive into the reflog occasionally... :)
And stree makes it so easy. The easy hunk inclusion is excellent etc. Whenever I spot a dodgy commit by someone they usually have done it via command line and not checked properly what they are including in the commit.
I just wished they would make a linux client for the 50% Im on my linux box. I tried a lot of alternatives: Tower, GitG, SmartGit, etc. Whilst admirable they are either too basic, not polished enough or lack some basic feature I depend on. Hopefully they will get better or Atlassian releases a Linux client.
I've found the gui tools that come with git are actually the closest thing to SourceTree, and I'm tempted to switch to them because they're open source and work everywhere:
git gui (for staging and committing, including selecting lines to stage, which is in the right-click menu)
gitk --all (commit graph of all branches, switching checked out branch)
The main negative is a weird gui toolkit and some weird gui conventions (e.g., in "git gui", you click the _icon_ in the list of files on the left to stage/unstage the whole file)
agreed, git gui and gitk are a really good combo. For the most part I use the command line and sublimegit. git gui is hard to beat when I am staging hunks.
I don't have much experience with SourceTree, but I've found SmartGit/Hg to be a great UI for dealing with git repos. It handles my ssh keys (and even windows auth for TFS) like a champ, and has a really great view for looking at the logs of different branches and merging.
For someone who spends some time every day in git, the license was well worth it.
How does SourceTree compare to gitx? I've still to find a suitable alternative to gitx, which is light-weight, lets me visualize branches, and stage hunks. That's really all I need in a git gui.
30 comments
[ 2.7 ms ] story [ 68.6 ms ] threadUnfortunately, I don't really find a good GUI alternative that I like either ...
It's fast, it's regularly updated and supported, and it's powerful enough to do complex stuff (rebases, merges, cherry-picks, etc).
http://www.git-tower.com/
With TortoiseGit, when I find a git repo in the file-system and want to start working with it, I don't have to start another program, I can just activate the file browser's context menu with a single keystroke and then I can instantly see all of the Git commands that I normally use. I hardly even have to look at the list of commands though because the next keystroke is usually to hit the letter of the command that I want: (M)erge, (C)ommit, S(w)itch/Checkout, (L)og, etc... because you can customize the context menu to show the most useful commands.
(Disabling overlay icons in TortoiseGit is also a good idea. I typically just delete their registry entries via SysInternals/Autoruns.)
I have recently tried Tower and it provides similar functionality without the performance issues.
But it's become unbearably slow. I really wish they'd fix this.
Contrast this with Github for Windows/Github for Mac. These applications are trying to make getting startet with Git easy. If you're using Git with a GUI, that's the way to go, not with a toolbar full of obscure buttons.
Different target markets, IMO.
I don't know many serious devs that use the GH app, to be honest (because of its simplicity).
Once you're experienced and you need to use all the "advanced" features of git, SourceTree makes it easier to do so without having to remember every correct syntax without the fear of doing something fatal to your working commit (before pushing it).
EDIT: Not to mention, the integration with git-flow is just amazing for someone who wants a set work flow (pun not intended) and naming convention without the extra overhead of thinking about how to manage it.
EDIT2: Typos and grammar.
However, for a tool that lets you quickly commit and push, which is what the Github app is ideal for, Gitbox is very nice (Mac only however).
Alas atlassian decided to go after the "Github App - no clue of git" population by "simplifying" the UI in 1.9. It's my impression that that move backfired hard in the existing SourceTree user-base.
Some issues I have: - The app does have some lag at times. I really wish the app would update with local changes and remote changes much faster. Commits can also take some time. - I know how to use the application, but it could really use some better explanation/help around some features. For example, how to set up SSH keys and how branch/merge/stash/tag work. This would make Sourcetree much easier to learn for new users.
And stree makes it so easy. The easy hunk inclusion is excellent etc. Whenever I spot a dodgy commit by someone they usually have done it via command line and not checked properly what they are including in the commit.
I just wished they would make a linux client for the 50% Im on my linux box. I tried a lot of alternatives: Tower, GitG, SmartGit, etc. Whilst admirable they are either too basic, not polished enough or lack some basic feature I depend on. Hopefully they will get better or Atlassian releases a Linux client.
git gui (for staging and committing, including selecting lines to stage, which is in the right-click menu) gitk --all (commit graph of all branches, switching checked out branch)
The main negative is a weird gui toolkit and some weird gui conventions (e.g., in "git gui", you click the _icon_ in the list of files on the left to stage/unstage the whole file)
For someone who spends some time every day in git, the license was well worth it.