Quiz 1 content/topics and preparation

Quiz 1 will focus on version control and git, in both a team and individual setting.

The quiz will be a 50-minute paper-and-pencil quiz, closed book and closed notes, no electronics permitted, but you are permitted one double-sided 8.5x11" 'cheat sheet'. (This does not have to be hand-written.)
Basic use of git individually
Be sure you understand the basic operations and commands in git: their syntax, purposes, and the version control concepts behind them. You may be asked to provide or explain specific git commands based on a given example. Likely commands include git init, add, commit, rm, mv, log, diff, and stash. (Note that some other aspects of version control and git are discussed below.)

Branching and merging in git
Be sure you understand both the theory and git commands relating to basic branching and merging (how to create branches, switch branches, merge branches, and how to deal with merge conflicts in git).

As a practice exercise I would recommend creating a git repository, populating it with some files (added and committed), create a couple of branches, practice switching between the branches and modifying the files within them (differently in each branch), being sure to add/commit your changes before switching branches, then merging the branches back together to see first-hand what the merge conflicts look like, and practice resolving the conflict(s) to the point where the merge successfully completes.

As part of the quiz you may be asked questions about the theory of branching/merging/conflicts and you may also be asked to provide specific git commands and to show what a conflicted file might look like in a given example.

Use of the CS department 'git submit' process
You should by now have forked/cloned/modified/submitted your initial individual project and contributions repositories for phase 1 of the team project. As part of understanding the CS "git submit" processes, review the lecture notes for this process and be sure you have worked through and understood each step (forking, cloning, modifying/adds/commits, pushing, and the use of git status) and have tried setting up a remote for the instructor repositories.

As part of quiz 1 you may be required to explain the process and provide git instructions for a fictional assignment.

Team version control and your team's version control plans
Be sure you have read the lecture notes on version control in team projects, and understand the special problems related to having multiple people working on the same file collection. In particular, make sure you understand the ideas related to having a stable/production branch, a testing branch, and a development branch, and having individuals working on their own clones of the development branch. As part of quiz 1 you may be asked to describe portions of such a process, the related problems and possible solutions, and how specifically some of these processes could be handled in git.

Be sure your team has carefully discussed your planned version control processes for github or gitlab, and you are able to clearly describe how them.