Like others, I both love git and hate it. The bit I dislike the most is the inconsistency in commands and their opposites.
For instance, it is easy to add files to staging:
git add .
Oops! A bunch of other things got added, because I'm a newbie and haven't yet tuned my
.gitconfig. Fine, I'm still learning.
OK, have a guess at undoing it:
Frustrating searching to find that git reset
is really unadd. Yeah, I could guess that! not.
And that's the crux of it. Sure you can add git aliases, but an xxx/unxxx
pattern could have been built in right from the (ahem) git-go for any sensible command. Git commit/uncommit... merge/unmerge... etc etc.
And the great thing about git: Linus realised disk space was becoming to cheap to meter. Why bother crunching a delta on something when it was easier to just store compressed blobs. Thus the advantage of simple, fast and cheap (pick any three) branching.