I do actually like git. I find it needlessly obfuscatory and
deliberately confusing in its syntax and terminology, but it basically
does its job reasonably well. However, there are some popular blatant
untruths that I think people would do well to know about.
"Git is distributed". Well, up to a point. You can poke back
through the history (at least the history that hasn't been rewritten)
in your local copy, without contacting anywhere else. That's lovely.
However, the use case I had for it was: I have a bunch of files that I
work on from different places (e.g. desktop and laptop). When I start
work on the laptop, I want to pull in any updates I've made on the
desktop since last time I used the laptop, and push them back to the
desktop when I've finished. Now in theory you can git pull
in this
way, but in practice you get all sorts of warnings about overwriting,
and what you are supposed to do is… have a central git repository
that isn't used directly, and all the others check in and out of (all
right, push to and pull from).
"Git can track files through renames." Ha ha ha ha ha. Even with the
git mv
command, the file that appears after renaming is a completely
fresh file. Git will probabilistically compare its name with the
names of other files that disappeared in the same commit where it
appeared, in the hope that one of them might be the same one. But it
doesn't want to track the changes; git log
simply starts from the
rename unless you insert --follow
, and I haven't been able to
persuade git diff
to produce anything other than arcane error
messages.
I do actually like git. It's by far the best version control system
I've used. Really. I just wish its users wouldn't lie about what it
does. (Just like "org-mode can do dependencies" - no, not of the form
"A depends on all of B, C and D, and C and D both depend on E" it
can't.)
Comments on this post are now closed. If you have particular grounds for adding a late comment, comment on a more recent post quoting the URL of this one.