Your SlideShare is downloading. ×
Version Control ThinkVitamin
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Version Control ThinkVitamin

846
views

Published on

Chris Nagele and Alex Hillman of Wildbit (makers of http://beanstalkapp.com) give an intro to source control and Git for designers and VCS newbies.

Chris Nagele and Alex Hillman of Wildbit (makers of http://beanstalkapp.com) give an intro to source control and Git for designers and VCS newbies.


0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
846
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
1
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. Version Control Chris Nagele Alex Hillman
  • 2. Today's Agenda
      • A bit about us
      • A bit about version control
      • A practical intro to Git
  • 3. We're from Wildbit
    • Chris Nagele
    • Founder 
      • Transitioned business from consulting to product
      • International Team - 7 countries represented
      • Writer - ThinkVitamin, etc
      • Spends days in the server closet 
    • Alex Hillman
    • Business Development
      • Web development background
      • Cofounded Indy Hall - Coworking in Philadelphia
      • Public Speaker - SXSW, etc
      • Spends days communicating with our customers
  • 4. Beanstalkapp.com Go sign up for a free trial now!
  • 5. Why Version Control?  
  • 6. Why Version Control? cp index.html index-v12-old2.html
  • 7. Why Version Control? cp index.html index-v12-old2.html There has to be a better way
  • 8. The Old Way
      • Unmaintainable filesystems and filenames
      • Accidental overwriting of revisions
      • Updates on live server
      • Communicate with team via e-mail
      • Multiple server management nightmare 
    •  
  • 9. The New Way
      • Filenames stay the same!
      • Make changes with confidence - even revert!
      • Source control as "source" for updates
      • Code as communication with the whole team
      • Deploy different versions to different servers easily
    •  
  • 10. Vocabulary Lesson
      • Repository
      • Track Changes
      • Add or Update Files
      • Commit Changes
      • Revision
      • Revert
      • Branch
      • Merge
      • Diff 
  • 11. Version Control Options  
  • 12. Centralized  
  • 13. Centralized Client & Server Relationship
  • 14. Centralized Subversion - 
    • Benefits
      • Easy to understand
      • More control over users and access
      • More GUI & IDE clients
      • Simple to get started
      • Free & Open Source!
    • Disadvantages
      • Dependent on a server
      • Hard to manage a server (and backups!)
      • Slower
      • Some advanced tasks are very difficult
  • 15. Decentralized (also known as Distributed) 
  • 16. Decentralized A Network of Complete "Repositories"
  • 17. Decentralized Git  & Mercurial 
    • Benefits
      • Powerful and detailed change tracking (you commit more often)
      • No server necessary - everything is local
      • It's fast to branch and merge 
      • Free & Open Source!
    • Disadvantages
      • More to learn in order to  get started
      • Not as many GUI or IDE clients
      • It doesn't protect you from yourself
  • 18. Any questions so far?  
  • 19. Get Git!  
  • 20. Get Git! http://bit.ly/downloadgit - for OSX
  • 21. Get Git! http://bit.ly/downloadgit - for OSX Other platform? Sorry! http://git-scm.com
  • 22. Get Sample Files http://bit.ly/samplefiles
  • 23. Terminal  
  • 24. Global Config  
  • 25. Global Config
    • git config --global user.name "Alex Hillman"
    • git config --global user.email "alex@wildbit.com"  
  • 26. Global Config
    • git config --global user.name "Alex Hillman"
    • git config --global user.email "alex@wildbit.com"  
    • Verify:
    • git config --list
  • 27. Global Config - Bonus!
    • git config --global color.status auto
    • git config --global color.branch auto    
  • 28. Global Config - Textmate Bonus!
    • git config --global core.editor "mate -w"    
    • Or replace "mate -w" with your favorite text editor
  • 29. Command Line Basics
    •     pwd - present working directory
    •     cd - change directory
    •     cd .. - change directory up one folder level
    •     ls - list everything in present working directory
    •     mkdir - make directory
    •     cp - copy
    •     mv - move
  • 30. My First Repository You never forget your first
  • 31. Ignoring Files It's nothing personal
  • 32. Git Status What the hell is going on?
  • 33. The Stage And how to get your files on it
  • 34. PSA: Beware of  Empty Folders!  
  • 35. Committing No diamond necessary
  • 36. Committing Changes A little about "insertions" and "deletions"
      • Git is about "content"
      • An insertion adds a new line of content
      • A deletion removes a line of content
      • A change is actually a deletion + an insertion
    •  
  • 37. Committing Changes A little about "insertions" and "deletions"
      • Git is about "content"
      • An insertion adds a new line of content
      • A deletion removes a line of content
      • A change is actually a deletion + an insertion
      • Every change is very small, so commit often
      • More commits = more communication
  • 38. Inline Commits For quickies
  • 39. Verbose Commits More to say? That's ok!
  • 40. Stash Git's "Clipboard"
  • 41. Commits as Communication Tasks, tickets, links, & more
  • 42. Log What happened and when?
  • 43. Remotes Don't change that channel
  • 44. Sign up for Beanstalk! It’s ok…we’ll wait….
  • 45. Keys
  • 46. Keys
    • ssh-keygen -t rsa
  • 47. Keys
    • ssh-keygen -t rsa
    • cat ~/.ssh/id_rsa.pub | pbcopy
  • 48. Keys
  • 49. Creating a Remote The Easy Way – with Beanstalk
  • 50. git remote add
  • 51. git push
  • 52. git push beanstalk master
  • 53. Remotes Connecting some dots between the command line and Beanstalk
  • 54. Remotes I Think I’m A Clone Now
  • 55. Catastophe Delete your work
  • 56. git clone
  • 57. git remote
  • 58. git remote rename
  • 59. git pull
  • 60. git pull beanstalk master
  • 61. Branches
  • 62. git branch
  • 63. git checkout
  • 64. Branches + Remotes
  • 65. git push beanstalk ________ where ________ is the name of your branch
  • 66. git push beanstalk colorchange
  • 67. git pull beanstalk colorchange
  • 68. Integrating Changes Without A Time Traveling DeLorean.
  • 69. Rebase
  • 70. Rebase Check out progit.org
  • 71. Merge
  • 72. Make sure you’re on the branch you want to merge TO
  • 73. git merge __________ Where __________ is the name of your branch you wish to merge in.
  • 74. Keep that Repo Tidy
  • 75. git branch –d __________ Where __________ is the name of your branch you wish to delete.
  • 76. Conflict Resolution
  • 77. You didn’t commit yet!
  • 78. You didn’t commit yet!
    • error: Your local changes to the following files would be overwritten by merge:
    • index.php
    • Please, commit your changes or stash them before you can merge.
    • Aborting
  • 79. You Did Commit! But…
  • 80. You Did Commit! But…
    • * branch master -> FETCH_HEAD
    • Auto-merging index.php
    • CONFLICT (content): Merge conflict in index.php
    • Automatic merge failed; fix conflicts and then commit the result.
  • 81. Conflict Delimiters
  • 82. Commit, then push!
  • 83. Where to learn more
  • 84. Thank You! Chris Nagele – Alex Hillman http://www.beanstalkapp.com @beanstalkapp