I recently presented a one-hour tutorial to introduce Version Control using Git to an interdisciplinary group of researchers (mostly Psychologists and Biologists) at the University of Oregon’s Quantitative Methods Laboratory. The presentation introduced both Git’s Command Line Interface and the graphical interface that I currently prefer, GitEye; however, the presentation was created for an audience with no command line or version control experience.
I titled the presentation “Time-Travel for Academics: Get your digital life in order, and protect yourself from yourself.” The presentation’s abstract helped to motivate interest for users who might not have heard of version control:
If you’ve ever been working on a manuscript, statistical analysis, or notes on your reading, you might have started saving versions of your work with names like “Manuscript_good_3_a”, “Manuscript_after_edits_good”, “Manuscript_Use_This”, and “Manuscript_Use_This_Final”. Not only for your advisor or collaborators, but also for yourself a few months in the future, this approach to managing versions of your work can be confusing at best and misleading at worst, causing you to forget which version is the most up-to-date and, as a result, to re-do or lose work.
“Version control” is a type of free software that you can use to manage your work — not only to remember which versions are from when, but also to see exactly what you changed between versions, and why. Like a time machine, version control software lets you move back and forth between versions without clogging your hard drive with multiple copies of the same files.
We will be discussing the “why” and “how” of using Git, a popular and free version control system that is also the foundation for GitHub, which software developers and academics alike are using to share and collaborate on their work.
This talk will use both the command-line (the Terminal app in Mac OSX and Linux, and Command Prompt or Cygwin (https://www.cygwin.com/) in Windows — no experience assumed) and a point-and-click program called GitEye (http://www.collab.net/downloads/giteye).
The presentation’s source code files are here. The entire presentation was written in plain text using Markdown and then converted into HTML with Pandoc to be used with Reveal.js, an open-source browser-based presentation framework (i.e., nothing needed to run the presentation except for a web browser). It was (fittingly) version controlled using Git. Early in the development of the presentation, I also experimented with auto-generating a demonstration Git repository from scratch for live demonstrations, using RMarkdown. Instructions for converting from Markdown to final slide format can be found at the top of the Slides.Rmd file (which, following those early experiments, continues to contain instructions on invoking R to run any commands you might add).
A copy of the compiled slides
A copy of the complete presentation is here. It is a single, self-contained, 18.6 MB HTML file. Since the presentation uses Reveal.js, the slides can be advanced using the arrow keys on the keyboard or on the screen (left-right for major section breaks, up-down for minor slide breaks). An overview of all slides can be seen using the
o key on the keyboard. The screen can be made black temporarily with the
b key. Speaker notes (which are few, as the slides’ text is sufficiently useful here for prompting the presentation) are available with the
Although I am a registered instructor for gSoftware Carpentry, which also teaches on this topic, this presentation was written from scratch in order to assume no background knowledge (especially on the command line).
I have released the presentation files under a Creative Commons BY-NC-SA 4.0 license. If you would like to use other license terms, please contact me to ask about an alternative arrangement.