4 ms·
I disagree for two reasons: 1. the git commands map so cleanly to the states 2. there are so many terrible GUI interfaces that try and coddle the developer, re
by skeeter2020 3y ago
I disagree for two reasons:
1. the git commands map so cleanly to the states
2. there are so many terrible GUI interfaces that try and coddle the developer, really hiding the intent
I think the real problem is the flexibility allows for a lot of totally unintended but "legal" actions, from which it is really hard to recover because it's not your standard workflow.
- nerdponx 3y ago> the git commands map so cleanly to the states I disagree. "checkout" does literally 2 unrelated things, one of them destructive with no safety checks. "reset" kind of moves HEAD around, but does a bunch of other stuff in the process. "Rebase" has a lot of magical (albeit useful) behavior involved in determining what exactly gets rebased. Etc. > there are so many terrible GUI interfaces that try and coddle the developer, really hiding the intent I agree. The CLI is confusing and occasionally obfuscates the data model, so adding yet another confusing obfuscating layer isn't going to really help. That said, a really good GUI that doesn't try to hide what's going on, would be a useful learning aid.
- eviks 3y ago2. Don't pick a terrible one when teaching. What kind of reason is that?
- IshKebab 3y agoYeah I definitely agree on the proliferation of terrible GUIs. As someone else said, pick a good one when teaching. > the git commands map so cleanly to the states They absolutely don't. Someone already mentioned the mess of "checkout" and "reset" but that's only half the issue. The naming is a huge issue with learning. The worst is the "index" which is apparently named after the data structure used to store it. Such a bad name that it's often called the "staging area" instead. But even that is bad. Why isn't it just called the "draft commit"? That immediately tells you what it is. Another example is reset's soft/mixed/hard. Terrible meaningless names. They might as well have been called 1, 2 and 3. And there's more! It's not just the mapping and the naming. The actual CLI is stupidly inconsistent too. Flags have wildly different meanings depending on the command. You do the same action in totally different ways depending on insignificant differences (e.g. git reset --hard Vs git branch -f). I have to look up the command to delete a remote branch every single time I use it because it's just so unintuitive. I think people love the Git data model (which is great) sooo much that they think they love all of Git.