• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Git Basics at Rails Underground

Git Basics at Rails Underground



My Git Basics presentation at Rails Underground.

My Git Basics presentation at Rails Underground.



Total Views
Views on SlideShare
Embed Views



7 Embeds 415

http://rails.pixnet.net 391
http://coderwall.com 19
http://www.slideshare.net 1
http://paper.li 1
http://www.linkedin.com 1
http://theoldreader.com 1
https://www.linkedin.com 1



Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.


11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
Post Comment
Edit your comment

    Git Basics at Rails Underground Git Basics at Rails Underground Presentation Transcript

    • GIT BASICS Ariejan de Vroom – Kabisa ICT http://kabisa.nl http://ariejan.net http://twitter.com/ariejan
    • WHAT THE GIT?! “I'm an egotistical bastard, and I name all my projects after myself. First Linux, now git.” – Linus Torvalds
    • GET GIT! http://git-scm.com/
    • SURVEY • Who is NOT using version control? • Subversion? Mercurial? • Anything else?
    • WHY GIT?! • Distributed Repositories • Non-linear Development • Very fast branching and merging • Toolkit Design • Scales • Cryptographic authentication of history.
    • LET’S ROCK! ~/gitbasics $ git init Initialized empty Git repository in /Users/ariejan/gitbasics/.git/
    • LET’S ROLL! ~/gitbasics $ git clone git@github.com/ariejan/gitbasics.git
    • ~/gitbasics $ echo "Live long and prosper" > README ~/gitbasics $ git add README ~/gitbasics $ git commit -m "Added README" [master (root-commit)]: created 8e60b09: "Added README" 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 README
    • WHAT JUST HAPPENED? ~/gitbasics $ git log commit 8e60b09d3082e9473944075cc01b3b67bb97d5c3 Author: Ariejan de Vroom <ariejan@ariejan.net> Date: Mon May 11 21:51:24 2009 +0200 Added README
    • HOW GIT WORKS Working Directory git add Staging Area git commit Repository
    • WORKFLOW • Hack! ( TextMate, vim, ... ) • Stage your changes ( git add ) • Review your changes ( git status | diff ) • Commit (locally) ( git commit ) • Repeat
    • USING BRANCHES • Very, very fast • Keep different code paths separate • Try new things • Atomic merges!
    • SURVEY • How many of you use branching? • Do you work exclusively on trunk/master? • NEVER work on trunk/master?
    • BRANCHING c1 c2 c3 c4 master c5 c6 new_feature
    • LET’S BRANCH! ~/gitbasics $ git checkout -b new_feature Switched to a new branch "new_feature" ~/gitbasics $ git branch master * new_feature ~/gitbasics $ git checkout master Switched to branch "master" ~/gitbasics $ git branch -d feature3 Deleted branch feature3
    • MERGING • Merge two branches together • Add new features • Add bugs fixes
    • MERGING c1 c2 c3 c4 c7 master c5 c6 new_feature
    • MERGING ~/gitbasics $ git checkout master Switched to branch "master" ~/gitbasics $ git merge new_feature
    • REBASING • Bring a branch up-to-date • Rebasing is rewriting history! • Don’t use rebasing on a branch you’re sharing!
    • REBASING c1 c2 c3 c4 master new_feature c3’ c4’ c5 c6
    • REBASING ~/gitbasics $ git checkout new_feature Switched to branch "new_feature" ~/gitbasics $ git rebase master
    • REMOTE • Store and share your code! • github.com • gitosis ( self-managed over SSH )
    • PUSH ~/gitbasics $ git add origin git@github.com/ariejan/ gitbasics.git ~/gitbasics $ git push origin master
    • FETCH / PULL ~/gitbasics $ git fetch origin ~/gitbasics $ git pull origin master
    • WORKFLOW Working Directory add Staging Area commit checkout merge Repository push fetch pull Remote
    • TAGGING • Mark a point in history • Optionally sign it cryptographically with GnuPG
    • TAGGING v1.0 c1 c2 c3 c4
    • TAGGING ~/gitbasics $ git tag -a -m "Tag v1.0" v1.0 Switched to branch "new_feature" ~/gitbasics $ git tag v1.0 ~/gitbasics $ git push --tags
    • USING TAGS ~/gitbasics $ git checkout -b fix_1.0 v1.0 Switched to branch "fix_1.0" ~/gitbasics $ git rebase v1.0 ~/gitbasics $ git log v1.0..HEAD
    • BISECTING • Binary search for a bad commit • Find out where it when wrong (and who to blame!)
    • BISECTING v1.0 Good or Bad? HEAD c1 c2 c3 c4 c5 c6 c7
    • BISECTING Good or v1.0 HEAD Bad? c1 c2 c3 c4 c5 c6 c7 ~/gitbasics $ git bisect start ~/gitbasics $ git bisect bad ~/gitbasics $ git bisect good v1.0 ~/gitbasics $ git bisect bad | good ~/gitbasics $ git bisect reset ~/gitbasics $ git bisect start HEAD v1.0
    • RELEASE MANAGEMENT • Manage your DTSP environments • Branches to the rescue!
    • RELEASE MANAGEMENT ~/gitbasics $ git branch production master ~/gitbasics $ git push origin production ~/gitbasics $ git checkout --track -b production origin/production
    • RELEASE MANAGEMENT ~/gitbasics $ git checkout production ~/gitbasics $ git rebase master ~/gitbasics $ git push origin production
    • TAGGING RELEASES ~/gitbasics $ git checkout master ~/gitbasics $ git tag -a -m "Tag v1.0.3" v1.0.3 ~/gitbasics $ git push --tags ~/gitbasics $ git checkout production ~/gitbasics $ git rebase v1.0.3 ~/gitbasics $ git push origin production
    • THE STASH • Stash away uncommitted changes • Ideal for quick bug fixes!
    • THE STASH ~/gitbasics $ git status # modified: README ~/gitbasics $ git stash ~/gitbasics $ git status nothing to commit # Hack, stage, review, commit, etc. ~/gitbasics $ git stash pop ~/gitbasics $ git status # modified: README
    • GITHUB.COM • Share your code! • Hardcore forking action! • Crowd Sourcing
    • PULL REQUESTS ~/imdb $ git add -f boscomonkey git://github.com/boscomonkey/imdb.git ~/imdb $ git checkout -b boscomonkey/master ~/imdb $ git pull boscomonkey master ~/imdb $ git checkout master ~/imdb $ git merge boscomonkey/master ~/imdb $ git push
    • SURVEY • Who is going to try Git? • Stick with Subversion?
    • WE’RE HIRING! AWESOME CODERS recruitment@kabisa.nl
    • THANKS! Slides will be posted to http://slideshare.net/ariejan Contact me at ariejan@kabisa.nl or follow me at http://twitter.com/ariejan