3 ms·
> I must be some kind of genius, as I find git quite easy? It’s hard to compare when you knew a conceptually simpler VCS before learning git, since you have no
by sshine 3y ago
> I must be some kind of genius, as I find git quite easy?
It’s hard to compare when you knew a conceptually simpler VCS before learning git, since you have no clear memory of getting blasted with the full conceptual model of git at once.
I had to teach git to two colleagues recently, and it helped greatly that they could start with GitHub Desktop, since they also weren’t command-line veterans. The two concepts that were hardest for them to stick was
(a) that there is a difference between “main”, “origin/main” and the remote “main”: the idea of a local copy of a remote branch that is different from your local branch seems abstract and unnecessary until you have merge conflicts and you need the conflicting code to live somewhere locally.
(b) that you want to branch off from “main” instead of whatever branch you’re on right now, when you start on a new thing. This is true when you do a pull request and then begin something new.
I talk about branches as parallel dimensions and merging as portals between them.
I don’t remember when it happened, but there comes a point where you go from “it’s hard to use git without screwing up and having to start over” (https://xkcd.com/1597/ https://xkcd.com/1597/) to “it’s hard to use git and screw up”. Having “git reflog” makes you quite invulnerable which makes you dare rebasing more.
Reaching consistent undo should happen sooner than reaching complex history rewriting ability, because it greatly affects what you dare do.
- kibibu 3y agoImportantly, neither of these are solved merely by learning the dag structures internal to git.