Getting To Know Git

Preview:

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.

Citation preview

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

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.

Recommended