Version Control ThinkVitamin
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Version Control ThinkVitamin

on

  • 1,116 views

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.

Statistics

Views

Total Views
1,116
Views on SlideShare
1,116
Embed Views
0

Actions

Likes
1
Downloads
5
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

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.

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

Version Control ThinkVitamin Presentation 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