This perfectly describes my first 2 years with git.
That's one part of it - the unintuitive and misnamed command an options; mercurial does a bit better and I know a lot of people prefer it for that reason. The other part is a lack of understanding of the underlying model of how git works. It's not that difficult to understand but you do need to understand the model to get yourself out of trouble if you find yourself in a situation you didn't expect.
I find myself in those situations almost every time I step off the beaten path. Given one or more existing commits, revert the changes that the related patches introduce, and record some new commits that record them. This requires your working tree to be clean. LOL RFOLgit-revert - Revert some existing commits
Note: git revert is used to record some new commits to reverse the effect of some earlier commits (often only a faulty one). If you want to throw away all uncommitted changes in your working directory, you should see git-reset(1), particularly the --hard option. If you want to extract specific files as they were in another commit, you should see git-checkout(1), specifically the git checkout <commit> -- <filename> syntax. Take care with these alternatives as both will discard uncommitted changes in your working directory.
If you haven't seen it yet, the Git man page generator is pretty amusing, and excellently lampoons the man pages.
Reminds me of xkcd 1168: tar It amazes me that I've been using Arch Linux for almost 2 years now and I still have to look up which tar command extracts AUR packages (it's "tar xvzf" by the way, I had to look it up, but I'm pretty sure I'll remember it this time).
Modern versions of tar support auto-detect so just 'tar -xf' will usually do the right thing.
I saw this comic this morning and I have no idea what it means. I admit I have practically no IT background. Can someone explain please?
There's actually a cool site called Explain XKCD that does what it sounds like: http://www.explainxkcd.com/wiki/index.php/1597 In a nutshell, ... due to the complex nature of Git (and its notoriously counter-intuitively named commands), a large portion of users are unable to use it beyond basic commands. They consider it usually much more efficient just to save the code to a different file, download a newer copy, and then re-apply their original changes to the new copy than to try and understand and use Git's own convoluted built-in commands to attempt to fix it properly.Git is a version control system often used to track changes to (usually) plain text files, such as computer code.
For anyone else struggling to find the appropriate command, this cheatsheet is a great visualisation of a lot of the common commands