Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comGIT: An Illustrated Primer
http://mojolive.com/profile/dcousineauDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
HistoryDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comBitKeeper No Longer Free To UseLinux Kernel RequiresDi...
Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comGITthus,
gIttingstartedDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+LinuxDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> sudo apt-get install git$> sudo yum install g...
+OSXDaniel Cousineau // follow me : @dcousineau or http://dcousineau.comhttp://git-scm.com
+OSXDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> ruby <(curl -fsSkL raw.github.com/mxcl/homebrew...
+WindowsDaniel Cousineau // follow me : @dcousineau or http://dcousineau.comhttp://windows.github.com
+Gitting STartedDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+My First RepoDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Stage New FilesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Commit StagingDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+staging?Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comworking directoryindexrepository
+staging?Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comworking directoryindexrepository“staging”
+staging?Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comworking directoryindexrepositorymodify
+staging?Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comworking directoryindexrepositorygit add
+staging?Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comworking directoryindexrepository git commit
+DirectoriesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+ModifyDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Branch!Daniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Back to MasterDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Merge!Daniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+stashingDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+PoppingDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
branchingDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
Daniel Cousineau // follow me : @dcousineau or http://dcousineau.coma b cMASTERHEAD
Daniel Cousineau // follow me : @dcousineau or http://dcousineau.coma b cMASTERDEVELOPcreate new branchHEAD
Daniel Cousineau // follow me : @dcousineau or http://dcousineau.coma b cMASTERDEVELOPCheckout new branchHEAD
Daniel Cousineau // follow me : @dcousineau or http://dcousineau.coma b cMASTERDEVELOPcommit to developdHEAD
Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comcommit to master HEADa b cMASTERDEVELOPde
Daniel Cousineau // follow me : @dcousineau or http://dcousineau.coma b cMASTERDEVELOPmerge Developdef
RemoteDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comSVN GITdebacdebacd debac
Daniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Create a ProjectDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Create a ProjectDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Doing as I am toldDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+did as I was toldDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Push Again!Daniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Fetching & MergingDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+PullingDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Two Authors Two PushesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Two Authors Two PushesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+AFtermathDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+AftermathDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+AftermathDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+AFtermathDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+forkingDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+pull requestsDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+MAke Changes IN A NEW BRANCHDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Push ChangesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+See Our New BranchDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Create Pull RequestDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Oh Look, Our Pull RequestDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Oh Look Our Pull RequestDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Oh Look, It’s Merged In!Daniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+RemotesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Adding Another RemoteDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+create and sync new branchesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Delete local and remote branchesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Pull From One, Push To AnotherDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
GIT FLowDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
http://nvie.com/posts/a-successful-git-branching-model/
Daniel Cousineau // follow me : @dcousineau or http://dcousineau.com
Subversionand GITDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+et voilàDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> git svn clone -s -r 1000:HEAD https://url/...
+WorkflowDaniel Cousineau // follow me : @dcousineau or http://dcousineau.comNormal GIT Workflow
+SyncDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> git svn dcommit --dry-run$> git svn dcommit$> ...
+With some caveatsDaniel Cousineau // follow me : @dcousineau or http://dcousineau.comanything that has been dcommit’dis s...
+Local BranchingDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> git merge --squash branch
Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comgit merge --squash localbrnHEADa bcMASTERlocalbrnd e
Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comgit merge --squash localbrnHEADa bMASTERDEC
+Why?Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comSVN is TERRIBLE at mergesgit-svn will do it if yo...
+tracking svn branchesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> git checkout -t remotes/branc...
+creating remote branchesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> git svn branch -m “Creatin...
+personal opinionDaniel Cousineau // follow me : @dcousineau or http://dcousineau.comexcept for release taggingand a devel...
Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comuse git svnlocallypush forteamadoptionprocure gitserve...
Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comuse git svnlocallypush forteamadoptionprocure gitserve...
AdvancedUsageDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+reset my local changesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> git checkout -- .tell git “n...
+Replay Last commitDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> git reset --mixed REF
+Gitting ReadyDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+ResultsDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Undo Last commitDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> git reset --hard HEAD^HEAD^ means ...
+“Oops i forgot to branch”Daniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> git branch newbranchname$...
+“Oops i forgot to branch”Daniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+“Oops i forgot to branch”Daniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+“Oops I accidentally the commit message”Daniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> git rebase...
+OopsDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Lay of the landDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Making decisionsDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Reach 88MPHDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Fun with ParadoxesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Fruits of our laborDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+“Oops I committed the private key”Daniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> git filter-branc...
+Terrible MistakeDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+gone now, here yesterdayDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+VooDoo MagicDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+ResultsDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Cleanup The MessDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+Look Ma, No secret.key!Daniel Cousineau // follow me : @dcousineau or http://dcousineau.com
THANKS.FOR YOUR ATTENTIONDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
+further resourcesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.comhttp://git-scm.com/bookFREE!Attribut...
Upcoming SlideShare
Loading in...5
×

Git, an Illustrated Primer

528

Published on

Given at the July BCSPHP Meeting

Published in: Technology, Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
528
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
11
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Git, an Illustrated Primer

  1. 1. Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comGIT: An Illustrated Primer
  2. 2. http://mojolive.com/profile/dcousineauDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  3. 3. HistoryDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  4. 4. Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comBitKeeper No Longer Free To UseLinux Kernel RequiresDistributedPerformantSVN and CVS... Not So Much“CVS is what we should NOT do...”
  5. 5. Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comGITthus,
  6. 6. gIttingstartedDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  7. 7. +LinuxDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> sudo apt-get install git$> sudo yum install git$> echo "Seriously?"
  8. 8. +OSXDaniel Cousineau // follow me : @dcousineau or http://dcousineau.comhttp://git-scm.com
  9. 9. +OSXDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> ruby <(curl -fsSkL raw.github.com/mxcl/homebrew/go)$> brew install git$> say "Win!"
  10. 10. +WindowsDaniel Cousineau // follow me : @dcousineau or http://dcousineau.comhttp://windows.github.com
  11. 11. +Gitting STartedDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  12. 12. +My First RepoDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  13. 13. +Stage New FilesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  14. 14. +Commit StagingDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  15. 15. +staging?Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comworking directoryindexrepository
  16. 16. +staging?Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comworking directoryindexrepository“staging”
  17. 17. +staging?Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comworking directoryindexrepositorymodify
  18. 18. +staging?Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comworking directoryindexrepositorygit add
  19. 19. +staging?Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comworking directoryindexrepository git commit
  20. 20. +DirectoriesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  21. 21. +ModifyDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  22. 22. +Branch!Daniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  23. 23. +Back to MasterDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  24. 24. +Merge!Daniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  25. 25. +stashingDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  26. 26. +PoppingDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  27. 27. branchingDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  28. 28. Daniel Cousineau // follow me : @dcousineau or http://dcousineau.coma b cMASTERHEAD
  29. 29. Daniel Cousineau // follow me : @dcousineau or http://dcousineau.coma b cMASTERDEVELOPcreate new branchHEAD
  30. 30. Daniel Cousineau // follow me : @dcousineau or http://dcousineau.coma b cMASTERDEVELOPCheckout new branchHEAD
  31. 31. Daniel Cousineau // follow me : @dcousineau or http://dcousineau.coma b cMASTERDEVELOPcommit to developdHEAD
  32. 32. Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comcommit to master HEADa b cMASTERDEVELOPde
  33. 33. Daniel Cousineau // follow me : @dcousineau or http://dcousineau.coma b cMASTERDEVELOPmerge Developdef
  34. 34. RemoteDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  35. 35. Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comSVN GITdebacdebacd debac
  36. 36. Daniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  37. 37. +Create a ProjectDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  38. 38. +Create a ProjectDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  39. 39. +Doing as I am toldDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  40. 40. +did as I was toldDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  41. 41. +Push Again!Daniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  42. 42. +Fetching & MergingDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  43. 43. +PullingDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  44. 44. +Two Authors Two PushesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  45. 45. +Two Authors Two PushesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  46. 46. +AFtermathDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  47. 47. +AftermathDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  48. 48. +AftermathDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  49. 49. +AFtermathDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  50. 50. +forkingDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  51. 51. +pull requestsDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  52. 52. +MAke Changes IN A NEW BRANCHDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  53. 53. +Push ChangesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  54. 54. +See Our New BranchDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  55. 55. +Create Pull RequestDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  56. 56. +Oh Look, Our Pull RequestDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  57. 57. +Oh Look Our Pull RequestDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  58. 58. +Oh Look, It’s Merged In!Daniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  59. 59. +RemotesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  60. 60. +Adding Another RemoteDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  61. 61. +create and sync new branchesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  62. 62. +Delete local and remote branchesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  63. 63. +Pull From One, Push To AnotherDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  64. 64. GIT FLowDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  65. 65. http://nvie.com/posts/a-successful-git-branching-model/
  66. 66. Daniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  67. 67. Subversionand GITDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  68. 68. +et voilàDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> git svn clone -s -r 1000:HEAD https://url/to/repo ./wkngcpy$> git svn show-ignore > .gitignore
  69. 69. +WorkflowDaniel Cousineau // follow me : @dcousineau or http://dcousineau.comNormal GIT Workflow
  70. 70. +SyncDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> git svn dcommit --dry-run$> git svn dcommit$> git svn rebase
  71. 71. +With some caveatsDaniel Cousineau // follow me : @dcousineau or http://dcousineau.comanything that has been dcommit’dis set in stone! do. not. touch.git branches wellsvn... not so much
  72. 72. +Local BranchingDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> git merge --squash branch
  73. 73. Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comgit merge --squash localbrnHEADa bcMASTERlocalbrnd e
  74. 74. Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comgit merge --squash localbrnHEADa bMASTERDEC
  75. 75. +Why?Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comSVN is TERRIBLE at mergesgit-svn will do it if you don’tand when it fails, it does so spectacularlyyou’ll just litter your commit history
  76. 76. +tracking svn branchesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> git checkout -t remotes/branchname
  77. 77. +creating remote branchesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> git svn branch -m “Creating new branch” branchname$> git checkout -t remotes/branchname
  78. 78. +personal opinionDaniel Cousineau // follow me : @dcousineau or http://dcousineau.comexcept for release taggingand a develop branchdon’t bother with remote branchingjust stick to local and squashes
  79. 79. Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comuse git svnlocallypush forteamadoptionprocure gitserverfull clonepush to newgit server
  80. 80. Daniel Cousineau // follow me : @dcousineau or http://dcousineau.comuse git svnlocallypush forteamadoptionprocure gitserverfull clonepush to newgit server
  81. 81. AdvancedUsageDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  82. 82. +reset my local changesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> git checkout -- .tell git “no more options!”
  83. 83. +Replay Last commitDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> git reset --mixed REF
  84. 84. +Gitting ReadyDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  85. 85. +ResultsDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  86. 86. +Undo Last commitDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> git reset --hard HEAD^HEAD^ means commit priorto HEAD. HEAD^2 is 2commits prior, etc etc.
  87. 87. +“Oops i forgot to branch”Daniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> git branch newbranchname$> git reset --hard SHAcommit immediately beforethe intended first commitof our new branch
  88. 88. +“Oops i forgot to branch”Daniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  89. 89. +“Oops i forgot to branch”Daniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  90. 90. +“Oops I accidentally the commit message”Daniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> git rebase --interactive SHAcommit immediatelypreceding the commit inquestion
  91. 91. +OopsDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  92. 92. +Lay of the landDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  93. 93. +Making decisionsDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  94. 94. +Reach 88MPHDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  95. 95. +Fun with ParadoxesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  96. 96. +Fruits of our laborDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  97. 97. +“Oops I committed the private key”Daniel Cousineau // follow me : @dcousineau or http://dcousineau.com$> git filter-branch --index-filter git rm --cached --ignore-unmatch secret.key --prune-empty --tag-name-filter cat -- --allಠ_ಠ
  98. 98. +Terrible MistakeDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  99. 99. +gone now, here yesterdayDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  100. 100. +VooDoo MagicDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  101. 101. +ResultsDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  102. 102. +Cleanup The MessDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  103. 103. +Look Ma, No secret.key!Daniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  104. 104. THANKS.FOR YOUR ATTENTIONDaniel Cousineau // follow me : @dcousineau or http://dcousineau.com
  105. 105. +further resourcesDaniel Cousineau // follow me : @dcousineau or http://dcousineau.comhttp://git-scm.com/bookFREE!Attribution-NonCommercial-ShareAlike 3.0 Unportedhttps://help.github.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×