Workshop: Introduction to version control
Jump to navigation
Jump to search
Why use version control? The two advantages that version control provides:
- You are able to travel back in time to any point in a project and utilize it from that moment; and
- if you use a remote, collaboration is not only straightforward, it is encouraged.
This page's examples assume you are using git.
Contents
Required tools
- A VCS - preferably git.
- A web-based system to host your remotes. Bitbucket is recommended because it offers free private repos for small teams, but Github is the most widely used web-based repository.
Git is accessed through the command line interface (CLI) of your choice:
- Windows: you can use Git Bash (which was installed when you installed git.)
- Linux/OSX: terminal (which is installed with the operating system)
Setting up a repo
There are several ways to do this; the easiest way is to create a new repo on Bitbucket or Github, and then duplicate it on your local machine using a CLI of your choice:
- Navigate to the place you'd like to save the repo folder:
cd [path]
- Locate and copy the url for the git remote; in bitbucket, this is in the top-right corner of the repo's main page.
- Use the clone function of git to download a copy of the repo locally:
git clone [the_link_you_copied_in_step_2.git]
You can now begin adding files in your repo!
Using a repo
Typical workflow
When working on a project locally, your workflow will typically consist of the following:
- Modify files within the repository's folder (e.g. changing lines of code).
- Stage those changes:
git add [filename]
- Commit those changes to the repository:
git commit -m "[a message describing the changes]"
If you have a remote set up, then two steps bookend the workflow above:
- Pull any changes from the remote repository to your local copy:
git pull
- Modify files within the repository's folder (e.g. changing lines of code).
- Stage those changes:
git add [filename]
- Commit those changes to the repository:
git commit -m "[a message describing the changes]"
- Push the new commit to the remote repository:
git push [remote name] [branch name]
Common git commands
Command | Syntax | Function | Example usage |
---|---|---|---|
status | git status [options]
|
checks the status of the repo; shows a visual distinguishing among files which have and haven't been included in the repo, files which have been modified and staged, et al. | git status
|
add | git add [filename]
|
stages files; these files are ready to be committed. | git add README.md
|
commit | git commit -m "[commit message]"
|
commits changes to the repo, or "taking a snapshot". | git commit -m "changed header"
|
log | git log [options]
|
shows a list of all the previous commits in the current branch. | git log
|
checkout | git checkout [branch or snapshot name]
|
rolls the repository over in time to a particular snapshot; typically snapshots are referenced by a hash | git checkout a65f27
|
pull | git pull [options]
|
checks the remote for any new commits not on your local timeline; if so, downloads them to your local repo, then fast-forwards your local repo to the current snapshot | git pull
|
push | git push [remote name] [branch name]
|
connects to the remote and copies any new snapshots on your system to it | git push origin master
|
Flow chart
More information
Git's reference manual
Git cheat sheet