2. The Barlocker
● Chief Architect at Lucid Software
● Used Subversion and Git since
● Graduated with B.S. from BYU in
● Developed software for the
– Network Security
– Social Gaming
3. Creating a Repo, Staging, and Committing
4. Creating, Staging, and Committing
● Git repos can be created anywhere.
● Only the staging area will be committed.
● Every commit is identified by an md5 hash
generated by git.
5. Commit Graph
6. Log, Diff, Reset and Revert
7. Log, Diff and Revert
● Reverting in Subversion is NOT the same as
reverting in Git. Reverting in Git is reversing a
● `git revert` will keep the bad commit in the
history. `git reset --hard` will not.
8. Tagging, Branching, and Checkout
● HEAD is the working directory.
● Everything happens on HEAD – committing,
merging, rebasing, cherry-picking, etc.
● Branching is easy. Use them for everything!
9. Tagging, Branching, and Checkout
10. Tagging, Branching, and Checkout
11. Tagging, Branching, and Checkout
13. Merge vs Rebase
● Merge will create a merge commit.
● Rebase will rewrite history since the last
commit in common.
16. Merge vs Rebase
● Merge history cannot be reverted!
● Rebasing ruins sharing!
● In a fast-forward, these do the same thing.
17. Merge & Rebase
● Every repository has a full clone of every
commit, tag, and branch.
● “Remotes” are other clones of the same
● The repository you cloned from is always
19. Remotes & Clone
20. Fetch, Pull and Push
21. Fun Commands to Research
● `git cherry-pick`
● `git bisect`
● `git add -i`
● `git merge-base`
● `git rebase -i`
22. Any Questions?
23. Lucid Software Inc
● Building the next generation of collaborative web
● VC funded, high growth, profitable
● Graduates from Harvard, MIT, Stanford
● Team has worked at Google, Amazon, Microsoft