5 ms·
I do think git isn't user friendly. I came from perforce and also had a hard time building the mental model. Eventually I read the article about git's internals
by billconan 5y ago
I do think git isn't user friendly. I came from perforce and also had a hard time building the mental model. Eventually I read the article about git's internals, and finally got the idea. What's most useful for me was the diagram of the three states (https://stackoverflow.com/questions/3689838/whats-the-difference-between-head-working-tree-and-index-in-git https://stackoverflow.com/questions/3689838/whats-the-differ...).
some of the git's naming was also not intuitive for me, For example, calling the scratch area "index". I didn't seem to have to learn perforce, cvs or svn's internals to use them fluently.
but I guess it's a bit difficult to change the current situation. git has become the most common choice. And once the mental model has built, it's not that difficult to use, admittedly I only use a few very common commands.
you know the challenge won't be building the version control. for mass adoption, you need a github-like platform.
- TrianguloY 5y ago> some of the git's naming was also not intuitive for me For me this was (and is) the main source of "what is this and how do I use it" problems. Git is supposed to be an advanced tool to make snapshots of a folder, save them in a tree structure with multiple leaves, combine or even modify them, keep a copy remotely, etc. So, you are probably expecting to find a "save" command, an "upload/download", maybe a "combine snapshots", and for more advance tools an "edit history". But instead you have "commit", "push/pull", "merge" and "rebase". Those are less intuitive (specially for non English speakers) so you end using only the few ones someone told you to use. Once I realized what "fixup" was and how to use it I can't stop using it. Git model is no so complex, the naming is, so it's like learning a whole new language and it takes time.
- jimnotgym 5y agoI think it is also true that many of us use github or similar with a PR workflow rather than the way Torvalds and the Linux core maintainers use git.
- newswasboring 5y agoI don't think I know any other workflow but the PR based one.
- IshKebab 5y ago> some of the git's naming was also not intuitive for me, For example, calling the scratch area "index". I think this is the real problem. Git is actually really simple. The mental model is not even difficult - you can describe it in a sentence or two. * Each commit is a snapshot of your code at a certain point. Like making a copy of your project and renaming the folder (but stored more efficiently). Commits also include metadata to say which previous commit(s) they are based on. That's it. All the difficulty comes from figuring out what the hell all the badly named and confusing commands do. As you mentioned I think "the index" is probably the worst - why not "draft commit" or just "draft"? That's what it actually is. It's so bad people even invented an unofficial name for it ("staging area"). It's not the only one. "Commit" is a pretty bad name in itself. It's not even a noun - "snapshot" would have been better. And there's the commands... Look up how many different things `git checkout` does, or `git rev-parse`. And don't ask me how many times I've googled "git delete remote branch". They did add `git switch` so I'm mildly hopeful that at least some people care.
- pm215 5y agoWeird naming is definitely part of the problem. I think the other part that makes git painful for beginners is that it does not mandate a workflow (do you have a central authoritative server? where is it? Do you merge master into working branches? Rebase all the time or never at all? Squash commits, or not? Etc). That means that as a newcomer you have to decide for yourself what workflow to use (at a point in time when you have no experience to help you in making that choice) and when you read tutorials or advice online you have to be able to spot whether the author of the advice is using the same workflow you are or whether their suggestions and command line options will not work in your situation. Earlier version control systems tended to be more dogmatic about how they were used, which is less flexible but easier to get to grips with.
- dagw 5y agoI think the other part that makes git painful for beginners is that it does not mandate a workflow That's a very good point. Every company I worked at that used SVN back in the day used it in basically the same way, making it very easy to get started. With git different projects even within the same company can have completely different workflows.