Workshop: Introduction to version control

From Design and Build Lab
Revision as of 14:23, 19 November 2017 by Kristof (talk | contribs) (Ported page over from local server)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Why use version control? The two advantages that version control provides:

  1. You are able to travel back in time to any point in a project and utilize it from that moment; and
  2. if you use a remote, collaboration is not only straightforward, it is encouraged.

This page's examples assume you are using git.

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:

  1. Navigate to the place you'd like to save the repo folder: cd [path]
  2. Locate and copy the url for the git remote; in bitbucket, this is in the top-right corner of the repo's main page.
  3. 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:

  1. Modify files within the repository's folder (e.g. changing lines of code).
  2. Stage those changes: git add [filename]
  3. 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:

  1. Pull any changes from the remote repository to your local copy: git pull
  2. Modify files within the repository's folder (e.g. changing lines of code).
  3. Stage those changes: git add [filename]
  4. Commit those changes to the repository: git commit -m "[a message describing the changes]"
  5. 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

Gitworkflow.png

More information

Git's reference manual

Git guide and reference

Git cheat sheet