Git and GitHub are powerful tools for collaborative and individual projects. Git is a version control software that aids with tracking changes made to a set of files over time. GitHub is a web-based platform for storing and sharing project files online. This session begins with a conceptual overview of both tools, including an introduction to fundamental concepts such as version control and practical applications like developing a syllabus or collaborative writing. This session then covers initializing Git repositories, committing changes, pushing to GitHub, cloning repositories to your local machine, and forking repositories from other accounts on GitHub.
In this workshop, you will:
- Learn what Git, GitHub and Markdown are, how do they differ, and how they can be integrated to support your scholarly work
- Learn what version control is and why it can be useful
- Review basic Command line functions
- Install and configure Git on your local machine (
- Practice using basic Markdown by creating a syllabus using a plain text editor (including headers, lists, bold, and emphasis)
- Stage and commit changes using Git (
git commit -m, and
- Pushing a repository with Git and files to GitHub (
git push origin main)
- Cloning an existing repository from GitHub to your local machine so you can work with it (
- Forking an existing respository from another user's GitHub account to your GitHub account so you can work with it
This workshop is estimated to take you 4 hours to complete.
- What are Git and GitHub?
- What You Can Do with Git and GitHub
- Review of the Command Line
- Setting Up Git
- Creating a Syllabus File
- Creating Syllabus Content Using Markdown
- Staging and Committing Changes
- Pushing to GitHub
- Cloning and Forking
Before you get started
If you do not have experience or basic knowledge of the following workshops, you may want to look into those before you start with Introduction to Git and GitHub:
- Introduction to the Command Line (required) This workshop makes reference to concepts from the Command Line workshop, and having some knowledge about how to use the command line will be central for anyone who wants to learn about git and GitHub.
- Visual Studio Code (recommended) You can use any plain text editor but for our purposes, Visual Studio Code ("VS Code") will be used.
- Create a GitHub account (required) You need to have a GitHub account for the purposes of this workshop. It is free to sign up via this link. If you are an educator or a student, you might also qualify for the GitHub Education Pack, which you can read more about here: https://education.github.com/pack
Before you start the Introduction to Git and GitHub workshop, we want to remind you of some ethical considerations to take into account when you read through the lessons of this workshop:
- Within the nebulous open-source ecosystem, GitHub is an important place for storing and finding code. What if your open source code was used by an entity or for a purpose that did not agree with your ethics? For example, the platform received backlash from employees of GitHub and users of the platform when it was revealed that they held a contract with ICE. In this case, neither group wanted their code shared and used by ICE in detaining and deporting immigrants. Read more here.
Before you start the Introduction to Git and GitHub workshop, you may want to read a couple of our pre-reading suggestions:
- Bryan, J. (2017). Excuse me, do you have a moment to talk about version control? PeerJ Preprints.
- Ovadia, S. (2014). Markdown for Librarians and Academics. Behavioral and Social Sciences Librarian, 33, 120-124.
- Shaffer, K. (June 4, 2013). GitHub for Academics: The open-source way to host, create and curate knowledge LSE Blog.
- Begemann, O. (2016). Collaborative Writing on GitHub.
- How Digital Humanists Use GitHub: A presentation from Lisa Spiro and Sean Morey-Smith on their study of how Digital Humanists use GitHub.
Projects that use these skills
You may also want to check out a couple of projects that use the skills discussed in this workshop:
- GCDI's Digital Research Institute has been improved and built out over time using GitHub to store and track multiple projects that use the same base of repositories, and new versions.
- "F-ing Algorithm" project uses Git and GitHub to create multiple versions of their project in different languages—(Chinese and English), and to create a GitBook for sharing their work.
- Here are two examples of using Git and GitHub for teaching—a syllabus using a GitHub repo and a syllabus using a repo and GitPages.
- Fake New Corpus, an open source dataset composed of millions of news articles mainly intended for use in training deep learning algorithms for purpose of fake news recognition. The dataset is still work in progress and for now, the public version includes only 9,408,908 articles.
- C+=, a feminist programming language, created by The Feminist Software Foundation to smash the toxic Patriarchy that is inherent in and that permeates all current computer programming languages.
This workshop is the result of a collaborative effort of a team of people, mostly involved presently or in the past, with the Graduate Center's Digital Initiatives. If you want to see statistics for contributions to this workshop, you can do so here. This is a list of all the contributors:
- Current author: Connor French
- Past contributing author: Kristen Hackett
- Past contributing author: Patrick Sweeney
- Past contributing author: Jojo Karlin
- Past contributing author: Jennifer Tang
- Past contributing author: Stephen Zweibel
- Past contributing author: Mary Catherine McKinniburgh
- Past reviewer: Param Ajmera
- Past reviewer: Rafael Davis Portela
- Current editor: Lisa Rhody
- Current editor: Kalle Westerling
Digital Research Institute (DRI) Curriculum by Graduate Center Digital Initiatives is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License. Based on a work at https://github.com/DHRI-Curriculum. When sharing this material or derivative works, preserve this paragraph, changing only the title of the derivative work, or provide comparable attribution.