Back to Resources

Git in CS 277

by Anonymous, Brad Solomon

Overview

You are strongly encouraged to use git as the version control system for assignments in this class. The course staff will be using git in the following ways:

While we do not require that you learn and use good version control practices, we cannot stress enough how useful a good version control system can be when good practices are used. The following is a brief list of good version control practices:

Again, the above practices are not hard and fast, nor complete, but they should help you complete your MPs and future coding projects should you use git for them as well.

Setting up git

There are two repositories that you’ll be interacting with as part of this course:

  1. Your personal course repository
  2. The release repository (release)

In general, code will be released to release and you will merge it into your repository to get the initial code. You’ll then complete the MP or lab and then commit your code to your repository. We will view the latest submission you made before the due date to grade your work.

To get everything set up, there are certain things you will need to setup once the entire time you’re in the course, things you need to setup once per computer you use, and things you need to do once per MP.

Course Setup (necessary only once for the entire semester)

The first time you’re accessing the CS 277 repository this semester, you will need to have a CS 277 repository set up for you. This process is simple:

  1. Visit https://edu.cs.illinois.edu/create-ghe-repo/cs277-fa21/.
  2. When you view your repostiory, do not follow the instructions to create a README. Instead, just note the URL – it will be similar to https://github-dev.cs.illinois.edu/cs277-fa21/NETID

Workspace Setup (necessary only once per computer/directory you use)

Create a clone of your repository

To setup your computer to work on an MP or a lab, you will need to clone your repository onto your comptuer.

The URL of your repository will be based on your NetID and you will need to replace NETID with your NetID.

To clone your repository, run git clone:

git clone https://github-dev.cs.illinois.edu/cs277-fa21/NETID.git cs277git

…you can replace cs277git with whatever folder you want created. For example, you may want to call your folder just “cs277” or anything else.

Finally, move into the directory you just cloned:

cd cs277git

[Optional] Store your git credentials once and for all

Run the following command so that you only have to type in your git credentials once.

git config credential.helper store

Add the release repository as a remote

To connect to the release repository, you need to add a remote:

git remote add release https://github-dev.cs.illinois.edu/cs277-fa21/_release.git

You’re now all set to begin to work on an assignment! :)

Assignment Setup (necessary only once per assignment)

To retrieve the latest assignments for CS 277, you need to fetch and merge the release repository into your repository. This can be done with two commands:

git fetch release
git merge release/LAB_NAME -m "Merging release repository"

Don’t type LAB_NAME literally here; on each lab we will provide the proper name to use.

If git happens to complain about unrelated histories, use this command:

git merge release/LAB_NAME --allow-unrelated-histories

Assignment Progress (do this often!)

The main advantage of using git is the capacity to record your progress, ‘roll back’ your history if you encounter a problem, and get quick assistance from course staff when you have a clear problem in your code. To help facilitate this, you should add, commit, and push your work to your git repository frequently. This can always be done using the following commands on a command line while within your CS 277 directory:

git add -u
git commit -m "REPLACE THIS WITH YOUR COMMIT MESSAGE"
git push origin master

You should substitute "REPLACE THIS WITH YOUR COMMIT MESSAGE" with a short message describing what you did since the commit. This will help both you and course staff understand what you did in a specific commit.

Some examples of “good” commit messages:

Some examples of bad commit messages:

Assignment Submission

This semester, autograding will be handled using Gradescope. To submit an assignment, you will have to manually upload all relevant files to Gradescope. Once you have uploaded the files, you will receive an automated email [you cannot change this in settings] confirming that you have submitted the assignment. From there you can see the autograder results directly on Gradescope to make further changes.