An introduction to
version control systems
with Git
Version control systems
● Version control systems record changes to a file or set of
files over time so that you can recall specific versions later
● Many systems have risen to popularity over the years
○ RCS
○ CVS
○ Subversion
● We will focus on Git
2
Why use version control?
● These systems help with:
○ Tracking changes
○ Short and long term undo
○ Backup and restore
○ Synchronization
○ Collaboration
3
Local version control systems
4
Centralized version control systems
5
Distributed version control systems
6
The basic Git workflow
● Modify files in your working directory
● Stage the files, adding snapshots to your staging area
● Commit your changes to your local copy of the repository
7
The lifecycle of a file in Git
● Git does not necessary keep track of all files in your working
directory
8
Example repository
9
Gitting started
● Set your identity
○ $ git config --global [Link] "John Doe"
○ $ git config --global [Link] jdoe@[Link]
● Set other configuration options
○ $ git config --global [Link] true
● Get help
○ $ git help <verb>
10
Creating a new repository
● $ git init
● Creates a new (empty) repository in the current directory
11
Copying a repository
● For this class, your instructor will create a repository for
you, you will just need to copy it from GitHub to your
computer using the following command:
● $ git clone <repository>
○ Creates a copy of <repository> in the current directory
12
Staging files
● As you work, you will create new files and modify existing
files, when you are satisfied with your changes, you can
stage them for commit with:
● $ git add <file_pattern>
13
Committing changes
● Commits create a new version in the repository
● Include a commit message describing the new version
● $ git commit -m <msg>
14
Checking working directory status
● $ git status
● Reports:
○ Files in the working directory that are not tracked
○ File modifications not yet staged for commit
○ File additions and modifications staged for commit
15
Overviewing commit history
● $ git log
● Lists commits made to the current repository
16
Git example (cloning via GitHub)
17
Handy command - comparing versions
● It may be handy to see exactly how files changed
● $ git diff
○ Shows modifications not yet staged for commit
● $ git diff <commit_id>
○ Show changes since the commit specified
● $ git diff <commit_id1> <commit_id2>
○ Show changes between two commits
18
What we've covered here...
● … presents only a brief overview of Git
○ Further topics:
■ branching
■ rebasing
■ tagging
■ …
● Further resources:
○ [Link]
○ [Link]
○ [Link]
19