Chicago, October 19 - 22, 2010
Getting to know Git
Colin Harrington – Object Partners
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
whoami
Colin Harrington
Senior Consultant
@ColinHarrington
colin.harrington@gmail.com
colin.harrington@objectpartners.com
What is Git?
Git is a free & open source, distributed version
control system designed to handle everything from
small to very large projects with speed and efficiency.
Every Git clone is a full-fledged repository with
complete history and full revision tracking capabilities,
not dependent on network access or a central server.
Branching and merging are fast and easy to do.
– http://git-scm.com/
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Why Git?
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Why Git?
http://github.com/grails/
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Git != SVN
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Centralized VCS
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Decentralized / Distributed VCS
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Git – SVN Crash Course
http://git-scm.com/course/svn.html
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Mind << git basics
start brand new repository:
git init
clone an existing repository:
git clone <git­url>
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Demo
Mind << git basics
git init
git add .
git commit
git init
git add .
git commit
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Mind << git fundamentals
`
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Mind << git fundamentals
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Mind << git fundamentals
SHA hashes
Authorship preservation
Tree Structure!
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Mind << git fundamentals
http://book.git-scm.com/1_the_git_object_model.html
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Porcelain vs Plumbing
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Porcelain vs Plumbing
init
log
rebase
merge
commit
add
checkout
revert
pack
pull
push
status
bisect
clone
diff
grep
tag
branch
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Mind << branch
git branch
git branch ­a
git checkout ­b <branchName>
git checkout <existingBranchName>
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Mind << merge
git merge <branch>
git merge <branch> ­­no­commit
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Mind << clone
git clone <url>
Similar to svn checkout
Clones the entire repository!
Adds a remote
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Mind << remotes
git branch ­r
git branch ­­track <branch> 
<remote­branch>
git branch ­r ­d <remote­branch>
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Mind << working with remotes
Index
Local
Repository
Remote
Repository
Push
Pull
Files on drive
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Demo
Mind << git-svn
clone an entire SVN repository!
git svn clone ­s <url>
git svn clone ­s ­r 1234 <url>
… without -s, etc.
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Mind << git-svn
git svn rebase
→ rebases the current branch on the remote-tracked
svn branch (trunk or branches)
git svn fetch
→ fetches changes from svn
Checkout a remote branch
Keep the original branches clean!!
Stash, rebase, dcommit, and do it again!
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Give Back to Grails
http://grails.org/contribute
http://grails.org/Creating+Patches+From+Git
http://grails.org/GitHub+Forking+and+Pull+Requests
http://jira.codehaus.org/browse/GRAILS
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Demo
Resources
http://www.sourcemage.org/Git_Guide
http://git.or.cz/course/svn.html
http://www.youtube.com/watch?v=4XpnKHJAok8
http://www.kernel.org/pub/software/scm/git/docs/user-manual.html
http://www.kernel.org/pub/software/scm/git/docs/everyday.html
http://book.git-scm.com/
http://whygitisbetterthanx.com/
http://cheat.errtheblog.com/s/git
http://progit.org/book/
http://refcardz.dzone.com/refcardz/getting-started-git
http://bit.ly/avGDTz
… many more valuable resources out there!
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Q&A
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Thank you!
Credits

Git logo :: by azizash :: http://azizash.deviantart.com/art/GIT-Logo-95183398

Grails logo :: http://grails.org/Brand

Perl logo :: Criado por O'Reilly :: http://commons.wikimedia.org/wiki/File:Perl.jpg

VLC logo :: illustration (and iteration) by Richard C. G. Øiestad. GNU GPL by Video LAN

Rails logo :: KSEltar :: http://commons.wikimedia.org/wiki/File:Ruby_on_Rails_logo.svg

jQuery logo :: http://commons.wikimedia.org/wiki/File:Logo_jquery_215x53.gif

Linux logo :: gg3po (kde-look.org source) :: http://commons.wikimedia.org/wiki/File:NewTux.svg

Eclipse logo :: http://www.eclipse.org/artwork/

Android logo :: Google and Android's developpers :: http://commons.wikimedia.org/wiki/File:Android_robot.svg
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.

Getting To Know Git