Version Control with Git: Instructor Notes

Using a software tool to handle the versions of your project files lets you focus on the more interesting/innovative aspects of your project.

Overall

Version control might be the most important topic we teach, but Git is definitely the most complicated tool. However, GitHub presently dominates the open software repository landscape, so the time and effort required to teach fundamental Git is justified and worthwhile.

Because of this complexity, we don’t teach novice learners about many interesting topics, such as branching, hashes, and commit objects.

Instead we try to convince them that version control is useful for researchers working in teams or not, because it is

Teaching Notes

Automated Version Control

Setting Up Git

Creating a Repository

Tracking Changes

Ignoring Things

Just remember that you can use wildcards and regular expressions to ignore a particular set of files in .gitignore.

Remotes in GitHub

Collaborating

Conflicts

Open Science

Licensing

We teach about licensing because questions about who owns what, or can use what, arise naturally once we start talking about using public services like GitHub to store files. Also, the discussion gives learners a chance to catch their breath after what is often a frustrating couple of hours.

The Creative Commons family of licenses is recommended for many types of works (including software documentation and images used in software) but not software itself. Creative Commons recommends a software-specific license instead.

Citation

Hosting

A common concern for learners is having their work publicly available on GitHub. While we encourage open science, sometimes private repos are the only choice. It’s always interesting to mention the options to have web-hosted private repositories.