Git and Github for Educators and Students

I use git and github every day for my open source and research work.  I love it.  It's easily the best revision control system I've ever used.  And despite the comments I'll get saying that X is better, I'm not alone.  Git is everywhere today, thanks in no small part to how amazing github is to use.  You might not like git, but everyone else does.

I make my students learn and use git/github, too.  You'll hear people say that git is easy to use, hard to learn.  I think that's true, and for educators what it means is that you can't hope to guess your way through git, doubly so for your students.  You actually need to learn it.  I have found that it takes, on average, two weeks (4 x 2 hour sessions) to teach git/github to college students.  This includes all the basic stuff that you'd do with something like SVN, and then all the branching and remote magic that git adds.

But are git and github right for a teacher who hasn't used it before?  I'm not a git beginner, and my story may not satisfy you; what if you are?  About a year ago, I sent an email to all my colleagues telling them about github's new program for students and teachers, which allows you to create accounts for a class.  One of my colleagues was interested and came to discuss the possibility of using git and github in her course.  She wanted her students in our Systems courses to have a proper grounding with some sort of revision control system, and wanted my opinion about git in this context.  In the past they had tried SVN, and it hadn't been a smooth ride.

When we first met to discuss the possibility of using git, I was upfront about the work involved.  I gave her a lot of resources to look at and evaluate.  She's not easily intimidated, and thanked me, saying she'd go and teach herself git.  I didn't hear from her again...until yesterday.

I asked if she'd mind me sharing her email, and she agreed.  I've removed some names, but otherwise left it as sent:

I just wanted to let you know that my class is off and running with git/github.  All 12 teams are set up on github; I created a private repository for each team under my organization.  Over break week I played with git/github, both the gui and the bash. I installed, reinstalled, cloned, staged, commited, pushed, pulled, & created situations in which there were conflicts, etc. I gathered instructions from all the different places I found them and created a lab for the students--they downloaded git, set up the ssh keys, created repositories, pushed to github, then did some cloning, adding, deleting etc. I tried to include all of the "day to day" git stuff.  I think it went well; some students were experts which was great and some were not; I managed to get many people out of trouble. I am hoping that everyone is comfortable with the basics.

I use gitgui when I can and command line when I can't (e.g. pull).  I really really like git. It is very intuitive (at least for me); it makes so much more sense to me than SVN and it just....works! Everything was pretty easy to do (once I figured out how) and everything worked. Github is also great. So cool to be able to see updates as they happen.
I've known for a long time that that this was true based on my own teaching.  However, it's nice to see another perspective, and have my own experience confirmed.

One of the great things about git in an educational setting is that you don't need to rely on institutional IT, which, in my experience, is never agile enough to help you with revision control.  You can put repos on laptops, use USB keys, use DropBox, use github, etc.  You don't have to wait for someone to setup a server and make you accounts, don't have to deal with permissions, or any other nonsense that comes with centralized revision control systems.

If you're thinking about using git or github in your classroom, I highly recommend you consider it.  With a bit of upfront effort, the payoff is huge.