Using Git and GitHub for research and software development
Last edited: May 11, 2020
What is version control?
The TL;DR version:
Version control systems allow teams to safely make changes in code over time without worrying about losing important changes. Thus, it keeps a history of written code.
The longer version:
Version control systems are software that allows teams to create and manage databases of code called repositories . These snapshots are stored so that teams can easily revert between versions of code, and pull or push out different versions out simultaneously. Code can be stored in independent containers called branches for different purposes or people . With GitHub and bash scripting, tools can be downloaded or written to automate several processes.
Why use Git and GitHub?
So you've been working on some cool visualization pipeline or new machine learning algorithm that can help a bunch of people in lab, is necessary for a programming project, or is the software package you're publishing.
You can send the source code files by email or Google Drive. But what if you and others wanted to make changes that would make the software even more useful? Or worse - other people have already contributed to your code, creating several versions of the same file and you want to get the best version out to the public. How can you compile all of these different file versions to one (hopefully) working script?
Git and GitHub allow developers to do the following:
- manage changes in source code over time
- download the latest version of your project
- upload their improvements on your project / share code
- save multiple versions of your code as you add onto this database, so if you or your teammates introduce bugs into the source code, you can re-wind the clock and download the latest working version.
These are just a few of the many positive aspects of version control. For a more in-depth discussion, you can read the official documentation (which I highly encourage you to do), but this repository is meant to be a functional guide to quickly using Git and GitHub for your research project.
Why another GitHub tutorial?
There are so many introductory tutorials for using Git and GitHub. This can be daunting to read through, compile, and quickly apply to research projects.
The goal of this repository is to create a concise, step-by-step resource for maintaining your software projects on GitHub that you can apply in a couple of minutes to a few hours after learning the basics. This is specifically catered towards projects in the Chandrasekaran lab.
All the tutorials and resources can be found on the Wiki tab for this repository
Additionally, a presentation on using Linux, Git, and GitHub can be found here
Contributing
Contributions are welcome! If you have suggestions for improving this tutorial, read more on raising an Issue or submitting a Pull Request.
A non-comprehensive resource list
- A free course on Udacity to get started using Git and GitHub
- The Google Docs for markdown and text documents
- Some tools and workflows to enhance your GitHub experience
- A useful cheatsheet for writing in Markdown
- Holy crap, GitHub browser extensions!