Your SlideShare is downloading. ×
0
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Git Basics - RubyFest 2009
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Git Basics - RubyFest 2009

5,087

Published on

A gentle introduction to the awesomeness of Git as presented a RubyFest, may 2009.

A gentle introduction to the awesomeness of Git as presented a RubyFest, may 2009.

Published in: Technology
1 Comment
32 Likes
Statistics
Notes
  • great introduction to git
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
5,087
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
0
Comments
1
Likes
32
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide













































  • Transcript

    • 1. GIT BASICS by Ariejan de Vroom – Kabisa ICT
    • 2. WHAT THE GIT?! “I'm an egotistical bastard, and I name all my projects after myself. First Linux, now git.” – Linus Torvalds
    • 3. GET GIT! http://git-scm.com/
    • 4. SURVEY • Who is NOT using version control? • SubVersion? • Anything else?
    • 5. WHY GIT?! • Distributed Repositories • Non-linear Development • Very fast branching and merging • Toolkit Design • Scales • Cryptographic authentication of history.
    • 6. LET’S ROCK! ~/gitbasics $ git init Initialized empty Git repository in /Users/ariejan/gitbasics/.git/
    • 7. LET’S ROLL! ~/gitbasics $ git clone git@github.com/ariejan/gitbasics.git
    • 8. ~/gitbasics $ echo quot;Live long and prosperquot; > README ~/gitbasics $ git add README ~/gitbasics $ git commit -m quot;Added READMEquot; [master (root-commit)]: created 8e60b09: quot;Added READMEquot; 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 README
    • 9. 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
    • 10. HOW GIT WORKS Working Directory git add Staging Area git commit Repository
    • 11. WORKFLOW • Hack! ( TextMate, vim, ... ) • Stage your changes ( git add ) • Review your changes ( git status | diff ) • Commit (locally) ( git commit ) • Repeat
    • 12. USING BRANCHES • Very, very fast • Keep different code paths separate • Try new things • Atomic merges!
    • 13. SURVEY • How many of you use branching? • Do you work exclusively on trunk/master? • NEVER work on trunk/master?
    • 14. BRANCHING c1 c2 c3 c4 c5 c6
    • 15. LET’S BRANCH! ~/gitbasics $ git checkout -b new_feature Switched to a new branch quot;new_featurequot; ~/gitbasics $ git branch master * new_feature ~/gitbasics $ git checkout master Switched to branch quot;masterquot; ~/gitbasics $ git branch -d feature3 Deleted branch feature3
    • 16. MERGING • Merge two branches together • Add new features • Add bugs fixes
    • 17. MERGING c1 c2 c3 c4 c7 c5 c6
    • 18. MERGING ~/gitbasics $ git checkout master Switched to branch quot;masterquot; ~/gitbasics $ git merge new_feature
    • 19. REBASING • Bring a branch up-to-date • Rebasing is rewriting history! • Don’t use rebasing on a branch you’re sharing!
    • 20. REBASING c1 c2 c3 c4 c3’ c4’ c5 c6
    • 21. REBASING ~/gitbasics $ git checkout new_feature Switched to branch quot;new_featurequot; ~/gitbasics $ git rebase master
    • 22. REMOTE • Store and share your code! • github.com • gitosis ( self-managed over SSH )
    • 23. PUSH ~/gitbasics $ git add origin git@github.com/ariejan/ gitbasics.git ~/gitbasics $ git push origin master
    • 24. FETCH / PULL ~/gitbasics $ git fetch origin ~/gitbasics $ git pull origin master
    • 25. WORKFLOW Working Directory add Staging Area checkout merge commit Repository pull push fetch Remote
    • 26. TAGGING • Mark a point in history • Optionally sign it cryptographically with GnuPG
    • 27. TAGGING v1.0 c1 c2 c3 c4
    • 28. TAGGING ~/gitbasics $ git tag -a -m quot;Tag v1.0quot; v1.0 Switched to branch quot;new_featurequot; ~/gitbasics $ git tag v1.0 ~/gitbasics $ git push --tags
    • 29. BISECTING • Binary search for a bad commit • Find out where it when wrong (and who to blame)
    • 30. BISECTING v1.0 Good or Bad? c1 c2 c3 c4 c5 c6 c7
    • 31. BISECTING ~/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
    • 32. RELEASE MANAGEMENT • Manage your DTSP environments • Branches to the rescue!
    • 33. RELEASE MANAGEMENT ~/gitbasics $ git branch production master ~/gitbasics $ git push origin production ~/gitbasics $ git checkout --track -b production origin/production
    • 34. RELEASE MANAGEMENT ~/gitbasics $ git checkout production ~/gitbasics $ git rebase master ~/gitbasics $ git push origin production
    • 35. TAGGING RELEASES ~/gitbasics $ git checkout master ~/gitbasics $ git tag -a -m quot;Tag v1.0.3quot; v1.0.3 ~/gitbasics $ git push --tags ~/gitbasics $ git checkout production ~/gitbasics $ git rebase v1.0.3 ~/gitbasics $ git push origin production
    • 36. THE STASH • Stash away uncommited changes • Ideal for quick bug fixes!
    • 37. 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
    • 38. CONFLICTS • Conflicts happen • Git is clever • Easy to resolve manually • Merges are atomic!
    • 39. CONFLICTS ~/gitbasics $ git merge awesome_feature Auto-merged README CONFLICT (content): Merge conflict in README Automatic merge failed; fix conflicts and then commit the result. ~/gitbasics $ vim README ~/gitbasics $ git add README ~/gitbasics $ git commit -m “fixed merge conflict”
    • 40. .GITIGNORE • Specify which files to keep out of git • Location specific configuration • Generated files • Binary build files
    • 41. .GITIGNORE ~/gitbasics $ cat .gitignore config/database.yml log/*.log tmp/* public/system/uploads/*
    • 42. SURVEY • Who is going to try Git? • Stick with SubVersion?
    • 43. WE’RE HIRING! AWESOME CODERS recruitment@kabisa.nl
    • 44. THANKS! Slides will be posted to http://slideshare.net/ariejan Contact me at ariejan@kabisa.nl

    ×