getting to know git
DESCRIPTION
Git is known as 'the fast version control system' and has gained much popularity in the last couple years for good reason. Grails itself has moved to Git and is now hosted on github - http://github.com/grails. In this session at SpringOne2gx we spent time getting to know some of the basics of Git and exploring successful tools and workflows. We will also learn how we can utilize git and git-svn to work with grails.TRANSCRIPT
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
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
initlogrebasemergecommitaddcheckoutrevertpack
pullpush
statusbisectclonediffgreptag
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 checkoutClones 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
LocalRepository
RemoteRepository
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 branchKeep 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.