Unidata Online Python Training

Learning Python for the Atmospheric Sciences at your own pace

What Is Git, Github and Why Do You Care?

Motivation

When you start writing computer programs and Jupyter notebooks, you will need to save and keep track of your work as your code gains complexity. Moreover, you may want to share and collaborate on projects with other developers in your office or around the world. Or perhaps you aim to contribute and improve someone else’s program. Version control software and distributed version control software satisfies these objectives and are now an essential tool for any software developer beginner or expert alike. It will be to your advantage to learn about version control early on.

git

Version control has existed for decades and has gone through many incarnations. git is an implementation of distributed version control technology that is currently popular and powerful. Git stands in contrast to centralized version control systems like SVN which you may have heard of. Git was originally developed by legendary programmer Linus Torvalds, creator the Linux operating system. Unhappy with the available choices, Linus wrote his own version control software to collaborate on the Linux operating system. Git gained popularity with developers enabling a huge number of contributions to Linux making it the most successful open source project today. The benefits of git were not isolated to the Linux operating system. Many projects such as the scientific plotting library matplotlib have adopted git and in doing so have seen a marked increased in collaboration and contributions. When you leverage the power of the community, an enormous amount of work can get done.

github

github is a website that hosts git projects for free. There is a good chance your favorite open source software project is on github. It comes with value added tools to help you keep track of issues and collaborate with colleagues. Unidata has numerous projects on github, including this website, and other Python related projects such as netcdf4-python, the Unidata Python Workshop, Metpy, Siphon. Incidentally, when using git, you are not forced to use github for your project hosting. It is one of many options for git hosting including BitBucket, GitLab, or simply self-hosting.

git in the Geosciences

Several projects in the geoscience community have adopted git for their software projects:

Learning git

Now that you know all about the benefits of git, we must tell you that git does come with a downside of being complex and not always user friendly, especially for beginners. Therefore, the remainder of this section concerns curated resources to learn git. We also suggest you take some time in advance to learn git, rather than immediately start experimenting with git from the command line or a user interface. Having some understanding of how git works ahead of time will save you much frustration.