Setting up/Using Git for Handing in Assignments
Goals for this instructional page:
- Set up our Swarthmore GitHub accounts.
- Make sure you can grab, edit, submit assignments using git.
One-time git / GitHub configuration
Before using Swarthmore's GitHub Enterprise, you'll need to complete the
following configuration steps once:
1. Create an ssh key
SSH (Secure SHell) is a mechanism that allows you to interact
with remote machines and issue commands to them. It typically uses a username
and password, but in some cases (and this is one of them), you need something
else: a cryptographic key.
If you already have an ssh key, you can skip this step. If you're not sure,
you probably do not already have a key. You can check by issuing the
command:
ls -l -a ~/.ssh
If you see files named id_rsa and id_rsa.pub, you already
have a key. If those files aren't there, or you're told that you have no such
directory named .ssh, you'll need to generate a key.
GitHub has a good comprehensive
guide on the subject, but I'll give you the executive summary below:
Run the command ssh-keygen. This will give you the output:
$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/[username]/.ssh/id_rsa):
Press enter to confirm the default location of
/home/[username]/.ssh/id_rsa. Next, it'll ask you for a
passphrase:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Set a passphrase that you'll remember and then confirm it a second time.
After confirming your passphrase, it'll print a key fingerprint and some
strange abstract ASCII artwork that you can safely ignore.
2. Log in to Swarthmore's GitHub Enterprise and add your key.
Next, we need to let GitHub know about this key we just created. Head over
to https://github.swarthmore.edu
and log in using your typical Swarthmore account credentials (same account you
use for email). It may ask for your name, email address, or other information.
Fill that in.
When you're properly logged in, click the small gear icon at the top right
of the page to get to your account settings. Choose SSH Keys from the
menu on the left. Click the Add SSH key button, and two boxes will
appear. Fill in the name with anything you like, this is just to help you
remember where you generated the key. I would suggest a name like CS
account.
After you've named your account, you need to copy in the entire contents of
the id_rsa.pub file that you generated earlier. Make sure you use the file ending in .pub. You
can dump the contents of the file by executing:
more ~/.ssh/id_rsa.pub
Copy the entire output of that file, paste it into the Key box on
GitHub, and click Add Key.
3. Git client user configuration settings
Before you starting using the git command on the command line, you
need to give it a basic configuration. This will tell git who you
are, making it easy for you and your partner to identify who committed code to
your shared repository.
Replace the email and name strings with your email address and name. If you
have not run these commands, then the very first git commit will fail and tell
you to run them.
git config --global user.email "username@swarthmore.edu"
git config --global user.name "Your Name"
git config --global push.default simple
That's it for now. We'll come back to git again after we go over a few
examples.
4. Example Workflow
mkdir cs41
cd cs41
git clone git@github.swarthmore.edu:CS41-F23/hw01-YOURUSERNAME.git hw01
cd hw01
emacs hw1.tex # add your solutions to this file
make # (or: 'pdflatex hw1.tex') make sure it compiles to pdf on the lab computers
open hw1.pdf # make sure the pdf looks reasonable
git add hw1.tex # add the .tex file, NOT the .pdf
git commit -m "submitting hw 1"
git push
Note that you can add/commit/push as many times as you want before the
due date. And it's a good idea to do this! Particularly when you are
working with a partner, you should keep your github repo updated with the most
recent version (even if it's a draft) of your assignment.