header image

What is Git?

Git is a distributed version control system for software development. It is similar to subversion but instead of directly interfacing with a repository on a remote server where your group’s code is stored you also have a staging area (i.e. an intermediate repository) that is on your local workstation.  Each user initially clones (i.e. in subversion terms this means “checkout”) a working copy of the code base from the remote server to a local working directory. As code is edited by the user they commit their changes to their local repository (the staging area). Only when they feel that code is ready to be shared with the larger group do they then push their changes from their local repository to the remote repository.  The benefits of this extra layer of complexity are 1) speed at carrying out commits (b/c they are local), 2) better enables you to only share changes that you are confident you wish to share.  It should be possible with most git software to skip the commit to the local repository and push changes directly to the remote repository.

The web reference for your technical git related questions is http://git-scm.com/

Git lingo

clone: this makes a copy of the code base on the remote server to your local directory (equivalent to ‘checkout’ in SVN)

pull: once you have cloned the remote repository you can simply ‘pull’ in updates off the server (this is equivalent to ‘update’ in SVN)

commit: commit the changes you made to your local file to your local repository

push: push the changes you have made in your local repository back to the remote repository


One of the most popular repositories is GitHub which I highly recommend because of its great features and excellent tools for collaborative development and social coding. If you are an academic you can get free private repos and unlimited public repos. At another popular site is Bitbucket where academics can also get a some private repos for free. I maintain public repositories at GitHub, here are my links: personal page and lab page.

Introduction to Git

Version Control with Git (lecture) (code) – I developed this teaching material for a Software Carpentry Bootcamp

Skill Shares Git Basics – an awesome brief introduction to Git

http://git-scm.com/book/ – one of the best resources on the web for learning git

Graphical User Interfaces (GUIs):

See list of GUIs here http://git-scm.com/downloads/guis

Setting up Git on Windows:


Leave a response

Your response: