PageRenderTime 18ms CodeModel.GetById 10ms app.highlight 4ms RepoModel.GetById 1ms app.codeStats 0ms

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