Slide 1

Slide 1 text

INTRO TO GIT or How I Learned to Stop Worrying and Love the VCS Henry Umansky Princeton University

Slide 2

Slide 2 text

About Version Control Version control is a system that records changes to a file or set of files over time so that you can recall specific versions later. •  Local Version Control System •  Centralized Version Control System •  Distributed Version Control Systems Source: Pro Git (git-scm.com)

Slide 3

Slide 3 text

Local Version Control Systems

Slide 4

Slide 4 text

Centralized Version Control Systems

Slide 5

Slide 5 text

Distributed Version Control Systems

Slide 6

Slide 6 text

Short History of Git “I’m an egotistical bastard, and I name all my projects after myself. First Linux, now git.” – Linus Torvalds •  Created by Linus Torvalds, the creator of Linux, in 2005 •  Replacement for BitKeeper SCM for the Linux kernel •  Goals: •  Speed •  Simple •  Non-linear development (parallel branching) •  Fully distributed •  Handle large projects (like the Linux kernel) efficiently

Slide 7

Slide 7 text

Benefits of Git •  Branching and Merging •  Small and Fast •  Distributed •  Data Assurance •  Staging Area •  Free and Open Source

Slide 8

Slide 8 text

Git Workflow Subversion-style Workflow Integration Manager Workflow

Slide 9

Slide 9 text

A Successful Git Branching Model Source: nvie.com

Slide 10

Slide 10 text

Git Basics

Slide 11

Slide 11 text

Demo

Slide 12

Slide 12 text

Git Hosting •  GitHub – SCM, Issue Tracking, Wiki •  BitBucket – same as GitHub, but also always Mercurial •  Google Code – Full Project Hosting •  Gitosis – self hosted git server •  https://git.wiki.kernel.org/index.php/GitHosting

Slide 13

Slide 13 text

Git Resources •  Pro Git Book http://progit.org/book/ •  Git Primer http://www.danielmiessler.com/study/git/ •  A Visual Git Reference http://marklodato.github.io/visual-git-guide/index-en.html •  Git for Computer Sciencetists http://eagain.net/articles/git-for-computer-scientists/