4 out of the 6 SO most voted questions are common Git issues
stackoverflow.com
stackoverflow.com
For example when I was learning how to use it I routinely had to Google for many tens of minutes to answer questions such as:
What the fuck is "fast forward" and why is git displaying that message?
What are "refs" and why would I want to update them?
What is HEAD? Why isn't it named something more intuitive?
Etc. Why did I have to Google around for it? Because the documentation didn't actually answer my questions.
It's all compounded by the way the documentation is written: namely, from the perspective of the user who is intricately familiar with how git works. You have to remember the silly and needlessly obtuse names for everything. Why is there no "git-undo-commit"? What the fuck does rebase do? Bisect?
I realized writing this that even though I have undone commits in the past, I don't actually know how to do it. I just Google it every time.
It has the advantageous position of being better for certain workflows than CVS or mercurial perhaps, but frankly git is just not a very good piece of software.
The XKCD comic is true, because for most people downloading a fresh copy is far easier than working out how to use git properly.
I don't understand why that is supposed to be considered a problem.
Everyone has their personal itch, and scratching that itch is more than enough to actually do your work.
No one needs to memorize a whole dictionary before getting to speak with someone.
> The XKCD comic is true, because for most people downloading a fresh copy is far easier than working out how to use git properly.
If a local repository is broken, would it be better to:
a) spend hours trying to debug it, pinpoint the problem, come up with a solution, pray it doesn't affect remote repos
or
b) download another copy?
Need a fix in the next hour option a)
You are going to be working with a large team on a long term project, no deadlines are immediately pressing option b)
A true and stinging indictment of git's poor ui/ux
Googling for something is more convenient than going through the man pages, and Google is awesome at providing you with the best content associated with your query.
The highest voted question regarding git, «how do you undo the last commit», is the very first example listed in git's man page on git commit.
Convenience always trumps availability.
(Also it can say what it's doing in command-line form, for those who want to learn it and move on from the GUI).
I didn't do an exhaustive search, if such a project exists please point me to it. GitHub's desktop app is a start but it does not fit the bill, same for git gui and gitk.
They are nice for the easy stuff (push, pull, create new branch), but the simplified menu of command means that I don't actually know what git command I am executing if I select some of the options. As a result I stay away from them.
Why?
I mean, I don't oppose anyone investing his own time developing yet another GUI interface for git.
But the thing is, a command line gives you much more control and is actually quicker to operate than any GUI app.
I think this is more indicative of the level of git adoption than any complexity - and don't get me wrong, git is complex and messy.
I also think git gets a lot of these questions because developers want it to just work, and it doesn't. People who normally happily spend days figuring out a framework but are resistant to understanding the git mental model. Compared to other version control, the 'basics' are an order of magnitude more complex, and without an understanding of the internals, you will have a bad time.