Introduction to Version Control with Git and GitHub

Fri, Nov 9, 2018, 10:00 am to 4:00 pm
Frist MPR A
PICSciE/Research Computing

Fundamentally, a Version Control System (VCS) is a system that records changes to a file or set of files over time, so that you can recall specific versions later. It allows you to revert particular files or the entire project back to a previous state, compare changes over time, see who last modified something that might be causing a problem, and more. Most importantly, having your work under version control means that any mistake can easily be reverted.

Version Control is not restricted to source code management, it can be used to version any type of text file on a computer, for instance, text written in any markup language like LaTex, Markdown, reStructuredText. One limitation is that these systems do not usually work well with binary files.

Git is a modern VCS that is fast and flexible to use; thanks to its lightweight branch creation. Git’s popularity is due in part to the availability of cloud hosting services like GitHub, Bitbucket and GitLab. Hosting a Git repositories on a remote service like GitHub greatly facilitates working collaboratively as well as allowing you to frequently backup your work on a remote host.

We will start this workshop by introducing the fundamental concepts of Git. Then we will apply these concepts through some hands-on exercises, which will demonstrate how to build simple Git repositories to freely experiment with Git functionalities. The second part of the workshop will show how to publish to a remote repository on GitHub.

Git is a very extensive tool and we will only cover a subset of its functionalities. The goal of this workshop is to introduce Git's fundamental concepts so you can start using it as an intermediate level user, and give you the foundation for extending your knowledge. No prior knowledge of Git or version control will be necessary, but some familiarity with the Linux command line will be expected.

To participate in the hands-on exercises you will need the following:

1. A laptop.

2. An account on the OIT server called nobel; see Using the Nobel System to get access.

3. The ability to connect from your laptop to nobel through ssh. Linux and Mac OS X come with a terminal application with ssh already installed. Windows users will need to install an ssh client. We recommend PuTTY as it is the most popular ssh client on Windows.

4. A free GitHub account. You can sign up at

David Luet is a Linux system administrator for the department of Geosciences and a software and programming analyst with the Princeton Institute for Computational Science & Engineering (PICSciE) and Research Computing, OIT. He has been using Git extensively for the past 4 years, and helped many research groups on campus to implement collaborative software development workflows based on Git and GitHub. He received his Ph.D. from the department of Mechanical and Aerospace Engineering at Princeton University.

Please register online at  Registration is limited to 35.  Contact Andrea Rubinstein at with any questions. 

Upcoming Trainings

PrincetonPy: Preparing Python code and Jupyter notebooks for reproducible publication with Code Ocean

Python Programming Techniques

Fri, Mar 29, 2019, 2:00 pm to 3:30 pm

Upcoming Help Sessions

Weekly Help Sessions

Tue, Mar 26, 2019, 10:00 am to 11:00 am

Weekly Help Sessions in Visualization & Programming

Thu, Mar 28, 2019, 2:00 pm to 3:00 pm

Other Events

PICSciE Conference: Cross-Disciplinary Collaboration for Accelerated Scientific Discovery