First off: my experience with GIT is minimal, but I know how it works (somewhat).
I'm using SmartGit as a GUI, but it's kind of confusing to me.
What I have now is a simple master repository with a branch in which I work. I want the changes in the master repository to merge into my branch, but that doesn't seem to happen somehow. Rebasing gives errors now, so I'm getting a bit frustrated :(
Can anyone help me out in this? Maybe that a different GUI could make things clearer for me?
OSX users only:
Voting for zsh + iterm2 - best tool ever. You will learn the command line really good and it gives you a full power of git.
For simplification to modify commit messages (only for that): http://gitup.co/
If you are on a Windows OS, I'd recommend checking out http://gitextensions.github.io/
On other OSes I've had decent experience with SourceTree and GitHub GUI
This is my .bash_profile.
# git aliases
alias gs="git status"
alias ga="git add ."
alias gp="git push"
alias gpull="git pull"
alias gpp="git pull && git push"
commit(){
git commit -m "$*"
}
gitpush(){
git status
git add .
git commit -m "$*"
git push
}
alias gc=commit
alias push=gitpush
GUI might be good but CLI is always better. You can always tailor it according to your needs. :)
Committing and pushing code is really easy with these aliases. All I to to do is:
push A really long commit message
Tig on the command line is an excellent git repo viewer.
I would recommend http://gitup.co/
I never had huge experience with this, since when I met it, I already knew git CLI well enough to get me around with just a terminal and sometimes viewing the tree in gitk with its branches.
I think that a good GUI for beginners is an excellent learning tool to get what's going on behind the scenes, and GitUp project has exactly this goal: to ease up the confusion behind what's a push/pull/remote/local/distributed/etc concepts that you just read and don't make sense (at the beginning).
IMHO, I would recommend the following:
I can't believe that github.com/FredrikNoren/ungit hasn't been mentioned here. Been using it for a year now :)

SmartGit has better tools for check diff between two files.
If you are hosting your git server locally, you might like gitlab They have a web UI that is pretty similar to github.
And if you're using github or bitbucket, SourceTree works well in my experience.
And if you're comfortable with using terminal in general, I'd prefer terminal over the GUI ;)
On Windows, I have used TortoiseGit for the longest time. It isn't so much a client with an interface, but more a shell extension for Windows Explorer that allows you do to Git operations through the explorer context menu.
Personally i find SmartGit one of the best but recently GitKraken was made available to the general public and is gaining traction fast.
I've used the command line for the most part, except in those rare cases with messed up branches/rebases. For Mac I'd recommend GitX, simple to use and gets the job done.
I want the changes in the master repository to merge into my branch
It is my understanding that you don't want to learn git rather than use its main capability. In that case I'm going to go against the crowd who recommends command line and ask why aren't you using your IDE's vcs integration.
Every major IDE (IntelliJ, Eclipse etc) has the option of pushing, commiting etc with a simple button. That's what I do anyway :P :)
IMO the best way to learn and understand git is to use the command line. There are tons of places to visualize how it's working, like this: pcottle.github.io/learnGitBranching
Plus, the command line forces you to do things step by step, which can help prevent unwanted commits and such.
It's now in open beta. It runs on Linux, Mac and Windows.
Have used SourceTree on Windows and Git-Tower on Mac. But now I am using only GitKraken everywhere :-)
I never user a GUI, but I have heard good things about Tower. It sounds to me that it's not the tool that is the problem but the workflow. Check out Git Flow. It's an opinionated workflow for git built in bash. I use it for every project no matter how small. Every successful software company uses some similar workflow.
I have used many tools over the years, and probably won't fully settle on one app permanently for various reasons. However, right now I am using SourceTree. I have tried GitBox, Tower, and a handful of others.
To be honest, there aren't necessarily any UI tools that are going to make Git more intuitive for you. You would probably benefit from spending some time with various Git tutorials and command line examples. Then once you understand the usage patterns you can leverage a UI tool to help you expedite and tweak your workflows.
I use Tower. It's a commercial solution but the interface is the best I've used. That being said, I wish the tree diagram could be more useful.
Outside of merging, CLI is still the fastest and requires the least amount of mouse movements and clicks. :)
SmartGit is a great tool!
Learn to use the command line first, otherwise SmartGit or any of the other tools will not make sense. git-scm.com/book/en/v1/Getting-Started-About-Vers…
have you tried something like bitbucket? I have found it really simplifies the process for me (especially with merging)
Robert van der Elst
Front End Designer
@cruuuuuuz I'd recommend using whatever makes you more productive, others be damned. I'm way faster with the GUI over the CLI in every way (particularly throwing in Android Studio's in-built VCS system).
Jose M. Oberle
JS Coder by day and Barista by night.
Maikel D
From the experiences from my own team mates, who started by using a GUI for Git - it took them a lot longer to understand the concept of Git and they way it works than the team mates who worked from the CLI.
I'd suggest that you spend just that little extra time learning Git on the command line and I bet you'd be more efficient in the future - especially when you start chaining your commands. It's much quicker :)
But if you really want to work with a GUI, then SourceTree seems to be the favourite.