• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Why we love git (CPOSC 2012)
 

Why we love git (CPOSC 2012)

on

  • 207 views

This was a 50 minute talk I gave at CPOSC (http://cposc.org) in October 2012.

This was a 50 minute talk I gave at CPOSC (http://cposc.org) in October 2012.

Statistics

Views

Total Views
207
Views on SlideShare
207
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Why we love git (CPOSC 2012) Why we love git (CPOSC 2012) Presentation Transcript

    • Why We Love GitJason MayWednesday, June 26, 13
    • Why We Love GitWe can expressively trackcontent among multipleendpoints.Wednesday, June 26, 13
    • Why We Love GitWe can expressively trackcontent among multipleendpoints.Wednesday, June 26, 13
    • Why We Love GitWe can expressively trackcontent among multipleendpoints.Wednesday, June 26, 13
    • Why We Love GitWe can expressively trackcontent among multipleendpoints.Wednesday, June 26, 13
    • Why We Love GitWe can expressively trackcontent among multipleendpoints.Wednesday, June 26, 13
    • Why We Love GitWe can expressively trackcontent among multipleendpoints.Wednesday, June 26, 13
    • Commits are a form of documentation.Wednesday, June 26, 13
    • Checkout states“HEAD”Wednesday, June 26, 13
    • Checkout statesCommitACommitBHEADWednesday, June 26, 13
    • Checkout states“HEAD”The working treeWednesday, June 26, 13
    • Checkout states$ touch README.txtWednesday, June 26, 13
    • Checkout states$ touch README.txt$ git status --short?? README.txtWednesday, June 26, 13
    • Checkout statesCommitACommitBHEADWorking treeWednesday, June 26, 13
    • Checkout statesWorking tree HEADWednesday, June 26, 13
    • Checkout statesWorking tree HEAD? ? ?Wednesday, June 26, 13
    • Checkout states$ git add README.txtWednesday, June 26, 13
    • Checkout states$ git add README.txt$ git status --shortA README.txtWednesday, June 26, 13
    • Checkout statesThe Index!Wednesday, June 26, 13
    • Checkout statesCommitACommitBHEADWorking treeWednesday, June 26, 13
    • Checkout statesCommitACommitBHEADWednesday, June 26, 13
    • Checkout statesCommitACommitBHEADWednesday, June 26, 13
    • Checkout statesCommitACommitBHEADIndexWednesday, June 26, 13
    • Checkout statesWorking tree HEAD? ? ?Wednesday, June 26, 13
    • Checkout statesWorking tree HEADIndexWednesday, June 26, 13
    • Checkout statesWorking tree HEADIndex? ? ?Wednesday, June 26, 13
    • Checkout states$ git commit -m ‘Add README.txt’Wednesday, June 26, 13
    • Checkout states$ git commitWednesday, June 26, 13
    • Checkout statesCommitACommitBHEADIndexREADME.txtWednesday, June 26, 13
    • Checkout statesCommitACommitBIndex *commit*HEADWednesday, June 26, 13
    • Checkout statesCommitACommitBIndexHEADWednesday, June 26, 13
    • Checkout statesCommitACommitBIndexCommitCHEADWednesday, June 26, 13
    • Checkout statesCommitACommitBIndexCommitCHEADWednesday, June 26, 13
    • Checkout statesCommitACommitBCommitCHEADWednesday, June 26, 13
    • The concept of a refWednesday, June 26, 13
    • Checkout statesCommitACommitBCommitCHEADWednesday, June 26, 13
    • Checkout states42ae0e08e0c855bc65d74f96bb37Wednesday, June 26, 13
    • Checkout states42ae0e08e0c855bc65d74f96bb37 HEADWednesday, June 26, 13
    • HEADWhat is a ref?Wednesday, June 26, 13
    • my-branchWhat is a ref?Wednesday, June 26, 13
    • origin/my-branchWhat is a ref?Wednesday, June 26, 13
    • What is a ref?$ git reset HEAD^Wednesday, June 26, 13
    • What is a ref?42ae0e08e0c855bc65d74f96bb37 HEAD(reset)Wednesday, June 26, 13
    • What is a ref?42ae0e08e0c855bc65d74f96bb37HEAD(reset)Wednesday, June 26, 13
    • RemotesWednesday, June 26, 13
    • Interacting with aRemoteWednesday, June 26, 13
    • Interacting with aRemoteWednesday, June 26, 13
    • Interacting with aCloningRemoteWednesday, June 26, 13
    • Interacting with aLocal CheckoutCloningRemoteWednesday, June 26, 13
    • Interacting with a$ git clone git://HOST/repo.gitWednesday, June 26, 13
    • Interacting with a$ git clone ./dir/repo.gitWednesday, June 26, 13
    • Interacting with a$ git clone user@host:dir/repo.gitWednesday, June 26, 13
    • Interacting with aPullingLocal Checkout RemoteWednesday, June 26, 13
    • Interacting with aPullingLocal Checkout RemoteWednesday, June 26, 13
    • Interacting with a$ git pull origin masterWednesday, June 26, 13
    • git-fetchWednesday, June 26, 13
    • git-fetchgit-mergeWednesday, June 26, 13
    • master is local!origin/master is also local!Wednesday, June 26, 13
    • Interacting with a$ git pull --rebase origin masterWednesday, June 26, 13
    • git-fetchgit-rebaseWednesday, June 26, 13
    • Checkout states42ae0e08e0c855Wednesday, June 26, 13
    • Checkout states42ae0e08e0c855“base”Wednesday, June 26, 13
    • Checkout states42ae0e08e0c855Wednesday, June 26, 13
    • Checkout states42ae0e08e0c855f96bb37Wednesday, June 26, 13
    • Checkout states42ae0e08e0c855f96bb37Wednesday, June 26, 13
    • Checkout states42ae0e08e0c855bc65d74f96bb37Wednesday, June 26, 13
    • Checkout states42ae0e08e0c855bc65d74f96bb37new “base”Wednesday, June 26, 13
    • Checkout states42ae0e08e0c855bc65d74f96bb37Wednesday, June 26, 13
    • Interacting with a$ git push origin masterWednesday, June 26, 13
    • Decentralization is great, but it is still good to create astructure of authority.WorkflowWednesday, June 26, 13
    • WorkflowgitoliteWednesday, June 26, 13
    • WorkflowWednesday, June 26, 13
    • git-flowWednesday, June 26, 13
    • git-flowfeaturesWednesday, June 26, 13
    • git-flow$ git flow feature start more-dotsWednesday, June 26, 13
    • FEDABCdevelopfeature/more-dotsWednesday, June 26, 13
    • git-flowreleasesWednesday, June 26, 13
    • git-flow$ git flow release start 2.0Wednesday, June 26, 13
    • FEDAdeveloprelease/2.0BCWednesday, June 26, 13
    • git-flowhotfixesWednesday, June 26, 13
    • git-flow$ git flow hotfix start 2.0.1Wednesday, June 26, 13
    • FEDAdevelophotfix/2.0.1BCFEDAmasterWednesday, June 26, 13
    • git-flowsupportWednesday, June 26, 13
    • git-flow$ git flow support start 3.0Wednesday, June 26, 13
    • git’s philosophyWednesday, June 26, 13
    • Immutable branchesWednesday, June 26, 13
    • Rewriting historyWednesday, June 26, 13
    • Is history ever lost?Wednesday, June 26, 13
    • The ref logWednesday, June 26, 13
    • Example: git commit --amendWednesday, June 26, 13
    • Git amend42ae0e08e0c855bc65d74f96bb37Wednesday, June 26, 13
    • Git amend42ae0e08e0c855bc65d74f96bb37 fd0g830Wednesday, June 26, 13
    • Git amend42ae0e08e0c855bc65d74f96bb37 fd0g830shows up in ref-logWednesday, June 26, 13
    • Git amend42ae0e08e0c855bc65d74f96bb37 fd0g830shows up in ref-lognew HEADWednesday, June 26, 13
    • When is this okay?Hasn’t been pushed upstreamPushed upstream but nobody has pulled*Wednesday, June 26, 13
    • SummaryGit history is very readableConstructing commits is flexibleOrganizing commits is flexibleVirtually nothing is lostWednesday, June 26, 13