$30 off During Our Annual Pro Sale. View Details »

Open Source Collaboration with Git and GitHub

Open Source Collaboration with Git and GitHub

Super simple introduction to the concepts of Git and how to use GitHub.

Given to the RIT Society of Software Engineers in 2009. http://sse.se.rit.edu/

Nick Quaranto

January 12, 2012
Tweet

More Decks by Nick Quaranto

Other Decks in Programming

Transcript

  1. Open Source Collaboration
    with Git and GitHub
    Nick Quaranto

    View Slide

  2. whoami
    • 4th Year Software Engineering Major
    • From Buffalo
    – Snow is awesome
    – Go Bills
    • Rubyist
    • GitHub Blogger

    View Slide

  3. Version control
    sucks.

    View Slide

  4. But it doesn’t have
    to.

    View Slide

  5. View Slide

  6. History

    View Slide

  7. I'm an egoistical bastard, and I
    name all my projects after
    myself.
    First Linux, now git.
    -Linus Torvalds

    View Slide

  8. History
    • BitKeeper debacle
    • Design Goals:
    – CVS as an example of what not to do
    – Distributed workflow
    – Strong safeguards against corruption
    – Very high performance
    • In development since 2005

    View Slide

  9. View Slide

  10. Fast
    1. Fast

    View Slide

  11. Directed Acyclic Graph

    View Slide

  12. Small
    2. Small

    View Slide

  13. Git Internals: Blobs
    457aef93ff7ffbb289f7e1384f900679eacf044a
    main.c

    View Slide

  14. Git Internals: Trees

    View Slide

  15. Git Internals: Commits

    View Slide

  16. Git Internals: Commits

    View Slide

  17. Local
    3. Local

    View Slide

  18. The Staging Area

    View Slide

  19. CHEAP.
    4. Cheap Branching

    View Slide

  20. Git Internals: Branches
    branchname
    HEAD

    View Slide

  21. Branching

    View Slide

  22. Distributed
    5. Distributed

    View Slide

  23. Git Internals: Remotes
    branchname
    HEAD
    remotes/server/name

    View Slide

  24. Local vs. Remote

    View Slide

  25. Any Workflow
    6. Multiple Workflows

    View Slide

  26. Centralized

    View Slide

  27. Integration Manager

    View Slide

  28. Benevolent Dictator

    View Slide

  29. Failboat.
    It’s not perfect.

    View Slide

  30. The downsides
    • Complexity
    • Windows FTL
    • What's an IDE?
    • Unreadable source
    • Needs some maintenance

    View Slide

  31. View Slide

  32. +

    View Slide

  33. =

    View Slide

  34. View Slide

  35. View Slide

  36. View Slide

  37. View Slide

  38. View Slide

  39. How to Contribute
    1. Fork a repository at GitHub
    2. Clone and connect your local
    repository
    3. Write tests, implement functionality
    4. Commit your local changes
    5. Push your changes to your fork
    6. Make a pull request
    7. Profit!!

    View Slide

  40. Demo

    View Slide

  41. git log
    • Kudos to Scott Chacon who made
    – http://git-scm.com
    – http://whygitisbetterthanx.com
    • And to Michael Hartl
    – for Building the Insoshi Social Network
    • Wikipedia too.
    [email protected]
    http://litanyagainstfear.com

    View Slide