/outlines/Git Foundations Workshop Complete Outline.orgmode

http://github.com/matthewmccullough/git-workshop · text · 153 lines · 129 code · 24 blank · 0 comment · 0 complexity · e23977bcba445f930a1cb25d9deccd8f MD5 · raw file

  1. Git Foundations
  2. Distributed version control is all the rage these days, but is it worth it? It has been transformative for the dozens of organizations and thousands of developers that Ive mentored on the unique implementation called Git. But dont take my word for it. Discover the joy of a version control system that works for you, not against you, in a hands-on workshop. Bring a Windows, Mac, or Linux laptop and well install, set up, use and bend Git into workflows that werent even possible with the version control systems of yesteryear. Be prepared to rethink how lightweight, fast, and refreshing source code control can be. After completing this workshop youll be able to do practical work with Git for your day job or weekend OSS hobby.
  3. * Repos
  4. ** Workshop Materials
  5. *** https://github.com/matthewmccullough/git-workshop
  6. ** Sample Project
  7. *** https://github.com/matthewmccullough/hellogitworld
  8. ** Shell Scripts
  9. *** https://github.com/matthewmccullough/scripts
  10. ** Shell Decorations
  11. *** https://github.com/matthewmccullough/MatthewsShellConfig
  12. ** Cheat Sheet
  13. *** http://refcardz.dzone.com/refcardz/getting-started-git
  14. * What is Git?
  15. ** Why a distributed version control system?
  16. ** How does Git differ from previous VCS systems?
  17. * Installing Git
  18. ** The 5 minute litmus test
  19. ** No systemic intrusions
  20. ** Ask for a USB Stick if you need binaries
  21. * Creating local repositories.
  22. ** git init
  23. *** On exisiting code or folders
  24. *** Legacy repo creation syntax
  25. ** git init <REPONAME>
  26. *** For a brand new project
  27. *** Recent convenience syntax (1.7 era)
  28. * Configuring Git
  29. ** Git Config
  30. *** Local
  31. *** Global
  32. *** System
  33. ** Your Name
  34. *** git config --global user.name "Matthew McCullough"
  35. ** Your Editor
  36. *** git config --global user.email "matthewm@ambientideas.com"
  37. ** Color
  38. *** git config --global color.ui "auto"
  39. * The Basic Commands
  40. ** Add
  41. *** git add <FILENAME>
  42. *** git add <PATTERN>
  43. *** Interactive checkin
  44. **** git add -p
  45. ** Commit
  46. *** Making code a permanent part of history
  47. *** Writing a commit to the .git/objects directory
  48. ** Reset
  49. *** Affects the index, HEAD an working directory
  50. *** git reset --hard
  51. *** git reset --soft
  52. *** git reset --mixed
  53. * Three stage thinking
  54. ** Why Git has three trees
  55. ** Why Git has a staging area
  56. ** Why Git cares about content
  57. * Git under the hood
  58. ** Hashes
  59. ** DAGs
  60. ** Treeish
  61. * A code-and-commit workflow
  62. ** Write code, change files
  63. ** Add only what's ready for consumption
  64. ** Commit only that portion
  65. * Cloning
  66. ** Hello Git World repo via three addresses
  67. *** https://matthewmccullough@github.com/matthewmccullough/hellogitworld.git
  68. *** git://github.com/matthewmccullough/hellogitworld.git
  69. *** git@github.com:matthewmccullough/hellogitworld.git
  70. ** Each protocol type has minor differences
  71. ** Resulting repo is the same
  72. * Remotes
  73. ** Multiples
  74. ** Just bookmarks
  75. * Branching in Git
  76. ** Cheap branches
  77. ** Managing branches
  78. ** Merging code
  79. ** Rebasing: A better merge
  80. * Navigating the tree: diff, ls-tree and show
  81. ** Git exposes its internals
  82. ** Can discover the data structures
  83. * Seeing Git as a content tracker (not just file tracker).
  84. * Understanding Git network operations, including cloning, remotes, pushing & pulling.
  85. ** Deleting branches
  86. * Branching for experiments, stories, and features.
  87. ** Creating branches for later
  88. *** git branch <BRANCHNAME>
  89. ** Creating for now
  90. *** git checkout -b <BRANCHNAME>
  91. * Merging branches, tags, and arbitrary hashes with recursive and fast-forward outcomes.
  92. ** git merge <branch>
  93. ** Which branches are merged?
  94. ** git branch --merged
  95. ** git branch --no-merged
  96. * Rebasing for code change clarity, unification, and history linearity.
  97. ** Traditional rebase
  98. *** git rebase <COMMIT>
  99. ** Interactive rebase
  100. *** git rebase -i <COMMIT>
  101. * History Modification
  102. ** Reset
  103. ** Amend
  104. ** Rebase
  105. ** Reflog
  106. * Workflows
  107. ** Offline sharing
  108. ** Pushing and pulling
  109. ** Commander, lieutenant and soldier
  110. ** Centralized
  111. * Tools
  112. ** GUIs and IDEs
  113. ** Web tools
  114. ** Git hosting
  115. * Precision Actions
  116. ** Merging a single file
  117. *** git checkout
  118. ** Displaying a file at a certain point in time
  119. *** git show TREEISH:filename
  120. * Broad Actions
  121. ** Logging ranges
  122. *** git log SINCE..TO
  123. ** Diffing arbitrary hashes
  124. *** git diff ANYFROM ANYTO
  125. * Hashing examples in the real world
  126. ** Names (3 letters + 1) on United screens
  127. ** First letter plus last on bulletins
  128. ** Trying to make a unique thing out of a non unique or large thing (full name)
  129. ** Trying to obscure the data but still offer a unique fingerprint