Git is not for kids, it should be learned only by people that will need to code regularly in the future.
But, if do need to learn git, it's not hard at all.
The problem is that most people teaching git suck at it.
Git has been poorly explained since the begining of time, and because it has a terrible UI, plenty of gotchas and untold prerequisite, you can't really fiddle with it and learn it by yourself without putting a lot of efforts.
It's a shame, because it really is a simple system to use... provided you understand it, which a lot of teachers don't.
I use a toy for 5 years old, that let you construct a 3D structure with magnets, to represent the history, and I stick colored post its on it to represent references.
Important points:
- git log and checkout must be explained in details, as they are a huge source of confusion.
- don't use the famous graphs with revert arrows, they confuse the heck of students
- explain push/pull/clone as late as you can. Most of the course should be on a local repo.
- help them setup diff tools for their particular env. It's harder than you think given the diversity of them.
- you will often have to explain ssh and key management as well. It's not git, but git is close to useless without it. For windows users, you may have to spend an hour of terminal tutorial, putty or not. Use cmder or windows terminal, not cmd.exe.
- do give them a cheat sheet, but only incrementally once they understand the concepts behind them, otherwise they will copy/paste blindly.
- teach them to have a clean working copy before some key operations, and show them why.
- make a big final exercice where they all work on the same code base and push/pull/merge from each others. Twice. Once where you help them. Once to check they can do it now without your help.
- rebase, squash and cherry pick are optional. Do them only if you have plenty of time at the end, and that the rest is well understood.
But, if do need to learn git, it's not hard at all.
The problem is that most people teaching git suck at it.
Git has been poorly explained since the begining of time, and because it has a terrible UI, plenty of gotchas and untold prerequisite, you can't really fiddle with it and learn it by yourself without putting a lot of efforts.
It's a shame, because it really is a simple system to use... provided you understand it, which a lot of teachers don't.