Title text: If that doesn't fix it, git.txt contains the phone number of a friend of mine who understands git. Just wait through a few minutes of 'It's really pretty simple, just think of branches as...' and eventually you'll learn the commands that will fix everything.
Transcript
[Cueball points to a computer on a desk while Ponytail and Hairy are standing further away behind an office chair.]
Cueball: This is git. It tracks collaborative work on projects through a beautiful distributed graph theory tree model.
Ponytail: Cool. How do we use it?
Cueball: No idea. Just memorize these shell commands and type them to sync up. If you get errors, save your work elsewhere, delete the project, and download a fresh copy.
I've been using git for 10+ years and still sometimes do this. I know I could fix it, I also pretty much know what to do to fix it. However nuking the thing from orbit and restarting takes like 30 secs, so it's never worth fixing.
Git is something that is very comfortable to use after a year or two, but when you initially start using it, it is just so easy to mess things up in ways that are unrecoverable. I remember the silly days when I'd back up all my changes first before using git since I would so regularly lose everything through a combination of git commands.
It's easy for me now, but the initial stages punish mistakes severely. It's the dark souls of source control, except it's not really fun. It's just a very beginner unfriendly tool.
My experience is the opposite. A colleague who uses SourceTree and git console (for use cases not covered by SourceTree) asked me a few times to fix his branches when something went wrong (after using git console). I easily fixed it using SmartGit (paid software).
I like SourceTree and it's free. I don't use it all the time, but if I've made a bunch of changes debugging something and I want to easily discard all of the debugging-only changes, the UI makes it really easy to commit or discard individual lines from the changeset.
Additionally, I set up an alias to open it from the command line (stree) and have it show whatever git directory I opened it from.
I'm using Mercurial for the last 2 years at current company, before that it was 5-7 years of Git on various jobs.
It's so much better if you use it correctly (no long-living or big branches). I forgot what hell Git was sometimes.
I have used Mercurial at work for years, and Git for side projects. I screw up far less often in Mercurial, and its tools are easy to use. It's strange how thoroughly Git took over.
IME, to use git effectively, and make sense of the man-pages, you have to know a lot of the internals of how git works. I found it helpful to read "Git from the bottom up" when I had to start using it professionally: https://jwiegley.github.io/git-from-the-bottom-up/