Sign up ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

I have already taught versioning with Git, but I think it could be more enjoyable for the guys I teach if I use another approach to teach them.

The guys I mentioned before were used to working with SVN and I tried to teach Git based on SVN. Not such a good idea. It seems that some guys/teams which use SVN need a re-education on version control when they're learning Git or another DCVCS.

In another attempt, I tried to show a scenario where a development team try to work without a (D)VCS and then I showed how their lives could be easier if they used a (D)VCS. I had the impression that part of the audience left the presentation without a clue what I was talking about.

I've taught other classes on other subjects without problems, so I think this is not a issue with me as a teacher, but with my method. I know Git and versioning as well I know the other subjects I've presented to the other classes.

So, basically, how to teach Git/DCVCS? Start with some diffs/patches and manual versioning and then teach how it can be more productive with Git? Start with Git object model? Or try to start with some pretty commands and try to save some time?

To be clear: I'm looking for approaches on how to teach DCVCS (focusing on Git) effectively, based on real experiences.


migration rejected from Oct 22 '13 at 1:09

This question came from our site for professional and enthusiast programmers. Votes, comments, and answers are locked due to the question being closed here, but it may be eligible for editing and reopening on the site where it originated.

closed as primarily opinion-based by gnat, MichaelT, World Engineer Oct 22 '13 at 1:09

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

4 Answers 4

up vote 5 down vote accepted

Good question, I wish I knew the answer!

I've been thinking about this for while, as I'd quite like to do an internal 'sell' of Git. None of this is tried and tested yet, but this is what I'm thinking around at the moment:

  • I'm thinking of two separate sessions - one on the 'how it works', and another on 'how to use it'. I'm guessing that it's best to present 'how to use it' first, but I'm not entirely sure. Some people are more 'bottom-up', so I'm considering giving the target audience the option.
  • The 'how it works' bit will be based on something like The Git Parable, which is the best presentation I've come across on the nuts and bolts - it really should have been titled "You could have invented git"
  • The other thing which will be audience-dependent is how to present the 'how to user it' - command line or GUI? I've got my own favourite GUI, but again, there are people who don't feel safe if they can't touch the metal.
  • The main thing that's holding me up at the moment is trying to come up with a demo project that is sufficiently complicated to make interesting use cases, but not so complicated that I have to waste time explaining the code...
I'm really interested on the 'sell' part :-) How to motivate a team/students to learn Git/DCVS. I have some really good arguments to show how git is good or why you need a (D)VCS but none of them seems to be the "killer" argument. –  Herberth Amaral Mar 7 '11 at 12:52
@Herberth, yes. The team I am part of actually use another VCS, so I use git as a 'patch creation' tool: being able to have my own branches, and push around my own commits, then tidy everything up before 'publishing' is the main motivator for me. –  Benjol Mar 7 '11 at 13:15

"I hear and I forget. I read and I remember. I do and I understand." - Confucius

Before the training you could use git-svn to convert an existing repository, and then you could let your colleagues play around with clones of that. Perhaps do a day of bug-fixing on a massive repo, with you as the assistant, to show just how quick and easy Git can be. You could showcase the entire standard tool chain:

  • clone (snappy, even with all the history)
  • diff (whoah, colors and pager by default!)
  • log
  • checkout / reset (effortless undo)
  • commit
  • push

Then you could continue with the advanced class:

  • stash / stash apply ("It's like a pause button!")
  • remote
  • add --interactive (perhaps with git-gui for simplicity)
  • --force
  • submodule
  • gitattributes

You might want to take a look at the first chapter of Joel Spolsky's hginit tutorial. The tutorial itself is about mercurial, but the first chapter is svn re-education ( ).


Just to mention of few tutorials:

These are great tutos on how to teach Git, but does not show the motivation to learn Git. Is there an English version of Git Atelier? I couldn't read it well :/ –  Herberth Amaral Mar 7 '11 at 12:46

Not the answer you're looking for? Browse other questions tagged or ask your own question.