3 ms·
I'm not a fan of this mythos around Git's complexity. It is simply a DAG, a bunch of references to nodes in that graph, and a stack of commands that let you mak
by OkayPhysicist 4y ago
I'm not a fan of this mythos around Git's complexity. It is simply a DAG, a bunch of references to nodes in that graph, and a stack of commands that let you make any modification to that system you so desire.
If you just learn the mapping of those concepts to Git's vocabulary, you really don't need to memorize all the commands. In the odd case, you can just look up the docs. Nodes are commits, references are either branches or labels depending on whether they stick to leaf nodes or any other node. Your working tree is the current state of the repo in your filesystem, and staging is how you assemble commits.
- bombcar 4y agoThere's a strong current in all tech things where "I couldn't figure it out intuitively the first time I sat down and tried it" becomes exactly the same as "this is ungodly complex and impossible to use". I've seen it leveled against emacs, git, vim, etc. It's kind of sad. I suspect that "attempts to explain something in an easy (but subtly wrong) way" have fueled it with regards to git.
- yCombLinks 4y agoThe problem is I've used multiple version control systems before git that were far simpler to use day to day, and fulfilled all of my needs. Be sad man.
- digisign 4y agoSounds great. But doesn't get anyone from point A to point B. It's like being handed city maps of LA and NYC and told to drive from one to the other.
- pessimizer 4y ago1) Git's vocabulary is bizarre. 2) Every tutorial and book leans into the horrible vocabulary, and the metaphors they use to "simplify" and "explain" it only make it worse. All of the analogical baggage is far more complicated than a straightforward description of the data structures. It took an embarrassingly long time for me to understand that HEAD was just a pointer at the branch or commit you were currently working with (I wish somebody would take that "detached HEAD" terminology out back and shoot it), and that a branch was just a tag that, if HEAD is pointing at it, will move to point to a new commit that you make. That's because "HEAD" and "branch" are stolen terms crowbarred into something quite different than CVS. edit: the actual Git book from git-scm.com is not bad at all, but most people aren't learning from that.
- yCombLinks 4y agoA counterpoint: I have an entire department of non-tech users that need to sync and version control documents at work. Not one of them has ever had a problem with SVN pulling and pushing to handle this. Git is completely inaccessible to this group of people, as soon as I tell them it's just a Directed Acyclic Graph with a pointer to a node I rightfully deserved to be laughed out of the room
- lmm 4y agoSo how does staging work? In particular: 1. If I've partially staged some changes, why can't I stash and unstash them and get back to the same state? 2. How come stashes are sort of like commits but sort of not? I've managed to get into a state where I had a stash that couldn't be popped because it was in the wrong format - how can I tell when this will or won't happen?