Git annoyances

- Image via Wikipedia
One problem with git is that it can't work with dirty index. For example, you clone a repo, make some change and after a while you want to pull changes from upstream. Oops, it refuses with "needs update" message.
One way around it is to make a branch before you do any changes and do commits in that branch. When it is time to update, switch to original branch, pull changes, switch to your branch and merge changes from original branch :/. But fear not, there is git stash, which saves your changes to stash leaving you with clean index. At this point you can safely pull the changes and than git stash apply to re-apply your changes. Now compare that to the simplicity of svn up.
Here is a collection of basic user unfriendly defaults. git diff shows you only diff to the index not the real situation. So stuff added with git add is not shown there, to get that as well you have to use git diff HEAD. Why isn't the git commit -a the default? Lemme get this one straight, by default git won't commit the files i modified? WTF? It should be noted that i solved both problems with simple aliases :-)
The final part of complaint isn't technical one. git pollutes my PATH with whooping 138 binaries (think about bash, which has to hash all those! :)). To gain customizability you don't need that many binaries, just the code exposed (like they do now, with git command. Also git is IMHO waaay over-hyped. How often do you read about hg? svk? darcs? For hg i can say for sure that the gap with git in publicity isn't reflected in features.
This is not supposed to be an unbiased review of git, nor am i saying git is a bad tool. It is just the collection of stuff i didn't like (and i like bitching) :-)
![Reblog this post [with Zemanta]](http://img.zemanta.com/reblog_e.png?x-id=51ef392a-617e-4fc0-a97c-79ded9b3b4fa)