MCS 275 Spring 2024
Emily Dumas
Reminders and announcements:
A system to:
Version control systems (VCS) are also known as "source code management" (SCM).
project4.py
project4old.py
project4draft.py
project4-new.py
project4-fixed.py
project4-fixed-debug.py
project4final.py
project4final2.py
project4final3.py
project4final3 (1).py
project4final_fixed-new2_revised\ (1).2024-04-17.py
A version control system (VCS) can help.
A VCS created by Linus Torvalds* in 2005.
Key properties:
* Finnish software developer and creator of Linux (1993).
Free to use; multiple implementations available.
Everyone has a copy of full history.
Supports parallel branches of development; no concept of a single "latest" version.
Many commands operate only on local files. Sync with others when ready.
See the official guide. You have it if the command git
in the terminal shows a help message.
In short:
git
in the terminalThere are some popular online services that will keep a copy of your repository on a server and/or let you interact with it in a browser.
These let you voluntarily centralize a purposely decentralized system.
It means you can't exchange work with collaborators when that service is down or unreachable.
But also means you rarely need to worry about how communication between collaborators will work (no file sharing or network setup...)
Today: git is usually used through a centralizing web service; huge productivity losses across industries when one of these has an outage.
git init
Creates a git repository in the current directory.
Initially has empty history and doesn't track any files.
Let's imagine how this would work for a program fetch.py
that downloads and saves an HTML document to a file.
git add
Put current version of the file in a staging area.
git commit
Record staged changes in the database.
(These files will be tracked from now on.)
git log
Show recent commits and descriptions.
git status
Show summary of current situation.
git push
Contact a remote repository and send it commits that are in our database but not theirs.
Fails if remote has changed since our last push!
git pull
Contact a remote repository and get commits from its database that are not yet in ours.
May trigger a merge if there have been changes to both local and remote since we last pulled.
git show COMMIT:FILE
will display file contents at any commit.
Make a local copy of an existing repository (from URL, directory, ...).