Starting with Git & GitHub

0 views

Published on

Introduction to Git & GitHub.

Agenda:
- What’s a Version Control System?
- What the heck is Git?
- Some Git commands
- What’s about GitHub?
- Git in Action!

Published in: Technology

Starting with Git & GitHub

  1. 1. #BeeTalks Starting with Git & GitHub Nicolás Tourné @nicotourne CTO of BeeReal Tandil, Argentina - 2013
  2. 2. Agenda • • • • • What’s a Version Control System? What the heck is Git? Some Git commands What’s about GitHub? Git in Action!
  3. 3. What’s a Version Control System? “An application that allows you to record changes to your codebase in a structured and controlled fashion.”
  4. 4. Why do I need that? • • • Makes it way easier to undo errors / roll back to earlier versions of code Makes it way easier to share a codebase between developers without creating conflicts Makes it way easier to deploy changes from development to staging or production environments
  5. 5. Popular Version Control Systems • • • • • • CVS - Concurrent Version System SVN - SubVersioN Git Mercurial Bazaar LibreSource
  6. 6. What the heck is Git? • • • • • Distributed Source Control system Open source, free (GNU GPL V2) Originally developed by Linus Torvalds for the development of the Linux Kernel in 2005 Focus on speed and efficiency Quite a unique design and therefore sometimes a bit scary and difficult to understand
  7. 7. What the heck is Git? • • • • Save snapshots, no differences Branching (lightweight & fast) Automatic merge of files Used on personal or very large projects, and for all size of teams
  8. 8. Distributed Development • • • Every Git working directory contains the complete repository and history and full revision tracking capabilities You’re not dependent on a central server and you don’t have to be online It’s extremely fast - much faster than SVN, CVS and other systems
  9. 9. Centralized vs Distributed Development SVN / CVS - Centralized development Central John Peter Bob Carl
  10. 10. Centralized vs Distributed Development Git - Distributed development John Peter Bob Carl Central
  11. 11. A Git Sample 1. A new git is initialized as a remote repository John Remote repository master C0 Peter
  12. 12. A Git Sample 2. John and Peter clone the git repository John Remote repository Peter master master master C0 C0 C0
  13. 13. A Git Sample 3. John does a commit John Remote repository Peter master master master C1 C0 C0 C0
  14. 14. A Git Sample 4. John does a push John Remote repository Peter master master master C1 C1 C0 C0 C0
  15. 15. A Git Sample 5. Peter does a pull John Remote repository Peter master master master C1 C1 C1 C0 C0 C0
  16. 16. A Git Sample 6. John does a commit & push John Remote repository Peter master master master C2 C2 C1 C1 C0 C0 C0 C0
  17. 17. A Git Sample 7. Peter does a commit John Remote repository Peter master master master C2 C2 C3 C1 C1 C1 C0 C0 C0
  18. 18. A Git Sample 8. Peter does a pull (fetch & merge) John Remote repository Peter master master master C2 C2 C4 C1 C1 C0 C0 C2 C3 C1 C0
  19. 19. A Git Sample 9. Peter does a push John Remote repository Peter master master master C2 C4 C4 C1 C0 C2 C3 C2 C3 C1 C1 C0 C0
  20. 20. A Git Sample 10. John does a pull John Remote repository Peter master master master C4 C4 C4 C2 C3 C2 C3 C2 C3 C1 C1 C1 C0 C0 C0
  21. 21. Git Commands Getting and Creating projects init To create a git repository from an existing directory of files $ git init clone If you want to get a copy of a project, you need to clone it $ git clone [url]
  22. 22. Git Commands Basic Snapshotting git add You have to add file contents to your staging area before you can commit them $ git add index.php git status View the status of your files in the working directory and staging area $ git status
  23. 23. Git Commands Basic Snapshotting git diff Shows diff of what is staged and what is modified but unstaged $ git diff git commit Records a snapshot of the staging area $ git commit -m “My comment”
  24. 24. Git Commands Basic Snapshotting git reset Undo changed and commits $ git reset git rm Remove files from the staging area $ git rm index.php
  25. 25. Git Commands Basic Snapshotting git mv Git doesn’t track file renames $ git mv index.php index.html git stash Save changes made in the current index and working directory for later $ git stash
  26. 26. Git Commands Branching and Merging git branch List, create and manage branches $ git branch $ git branch QA git checkout Switch to a new branch context $ git checkout QA $ git checkout -b live
  27. 27. Git Commands Branching and Merging git merge Merge a branch context into your current one $ git branch $ git merge QA git log Show commit history of a branch $ git log
  28. 28. Git Commands Branching and Merging git tag Tag a point in history as important $ git tag -a v1.0
  29. 29. Git Commands Sharing and Updating Projects git fetch Download new branches and data from remote repository $ git fetch git pull Fetch from a remote repo and try to merge into the current branch $ git pull
  30. 30. Git Commands Sharing and Updating Projects git push Push your new branches and data to a remote repository $ git push
  31. 31. What's about GitHub? • • • It’s a Git repository hosting service… but it adds many of its own features While Git is a command line tool, GitHub provides a web-based graphical interface It also provides access control and several collaboration features, such as wikis and basic task management tools
  32. 32. What's about GitHub? • • • By default, all projects are public and free. In you want a private project, then pay You can clone any public repository, follow projects and developers, post comments, etc It’s becoming the Facebook’s for developers
  33. 33. Git in Action! Go to your computer and start playing... 1. Create a new repository on GitHub 2. Clone this repository 3. Add new files 4. Commit and push them 5. Create a new branch and merge files
  34. 34. Thank you for your attention! Questions? Just tweet me @nicotourne or mail me at ntourne@beerealit.com beerealit.com
  35. 35. More info at... Official Git site http://git-scm.com Some slides http://www.slideshare.net/jomikr/quick-introduction-to-git http://www.slideshare.net/reallyordinary/intro-to-git-for-drupal-7 http://www.slideshare.net/anildigital/git-introduction http://www.slideshare.net/chacon/getting-git Git commands http://gitref.org/basic GitHub site http://github.com

×