Git the fast version control system
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Git the fast version control system

  • 2,831 views
Uploaded on

This presentation is meant for those who consider switching to git as a version control system

This presentation is meant for those who consider switching to git as a version control system

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,831
On Slideshare
2,781
From Embeds
50
Number of Embeds
4

Actions

Shares
Downloads
77
Comments
0
Likes
2

Embeds 50

http://coderwall.com 41
http://www.slideshare.net 7
http://www.linkedin.com 1
https://www.linkedin.com 1

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
    The fast version control system
    Jeroen Rosenberg jeroen.rosenberg@gmail.com
  • 2. Table of contents
    Short introduction to version control
    Version control systems
    Comparison with subversion
    Distributed version control
    Git usage
    Basic operations
    Solving conflicts
    Branching as a core concept
    Tooling
    Conclusion
    Git - the fast version control system
  • 3. Version control
    Short introduction
    Git - the fast version control system
  • 4. Version control (1)
    The management of changes to documents, programs, and other information stored as computer files
    A system that maintains versions of files at progressive stages of development.
    Every file
    Has a full history of changes
    Can be restored to any version
    A communication tool, like email, but with code rather than human conversation
    Git - the fast version control system
  • 5. Version control (2)
    Benefits
    Git - the fast version control system
  • 6. Version control (2)
    Benefits
    Allows a team to share code
    Git - the fast version control system
  • 7. Version control (2)
    Benefits
    Allows a team to share code
    Maintains separate “production” versions of code that are always deployable
    Git - the fast version control system
  • 8. Version control (2)
    Benefits
    Allows a team to share code
    Maintains separate “production” versions of code that are always deployable
    Allows simultaneous development of different features on the same codebase
    Git - the fast version control system
  • 9. Version control (2)
    Benefits
    Allows a team to share code
    Maintains separate “production” versions of code that are always deployable
    Allows simultaneous development of different features on the same codebase
    Keeps track of all old versions of files
    Git - the fast version control system
  • 10. Version control (2)
    Benefits
    Allows a team to share code
    Maintains separate “production” versions of code that are always deployable
    Allows simultaneous development of different features on the same codebase
    Keeps track of all old versions of files
    Prevents work being overwritten
    Git - the fast version control system
  • 11. Glossary
    Some commonly used terms explained before moving on
    Git - the fast version control system
  • 12. Key terms in version control
    Branch acopy of a set of files under version control which may be developed at different speeds or in different ways
    Checkout to copy the latest version of (a file in) the repository to your working copy
    Commit to copy (a file in) your working copy back into the repository as a new version
    Merge to combine multiple changes made to different working copies of the same files in the repository
    Repository a (shared) database with the complete revision history of all files under version control
    Trunk the unique line of development that is not a branch
    Update to retrieve and integrate changes in the repository since the update.
    Working copy your local copies of the files under version control you want to edit
    Git - the fast version control system
  • 13. Version control systems
    Git - the fast version control system
  • 14. Very limited and inflexible
    Concurrent Versions System (CVS)
    Git - the fast version control system
  • 15. Very limited and inflexible
    Concurrent Versions System (CVS)
    Fills most of the holes found in CVS, but added nothing to its development model
    Subversion (SVN)
    Git - the fast version control system
  • 16. Very limited and inflexible
    Concurrent Versions System (CVS)
    Fills most of the holes found in CVS, but added nothing to its development model
    Subversion (SVN)
    More feature rich and functional
    Git
    Git - the fast version control system
  • 17. Comparison with SVN
    Subversion
    Git
    Git - the fast version control system
  • 18. Comparison with SVN
    Subversion
    Centralized
    Git
    Distributed
    Git - the fast version control system
  • 19. Comparison with SVN
    Subversion
    Centralized
    Branching can be a pain and is used sparingly
    Git
    Distributed
    Branching is very easy and is a core concept
    Git - the fast version control system
  • 20. Comparison with SVN
    Subversion
    Centralized
    Branching can be a pain and is used sparingly
    Conflicts frequently occur and renaming is not handled well
    Git
    Distributed
    Branching is very easy and is a core concept
    Conflicts occur less frequent, renaming is properly handled
    Git - the fast version control system
  • 21. Comparison with SVN
    Subversion
    Centralized
    Branching can be a pain and is used sparingly
    Conflicts frequently occur and renaming is not handled well
    Can be slow due to network latency
    Git
    Distributed
    Branching is very easy and is a core concept
    Conflicts occur less frequent, renaming is properly handled
    Very fast since less operations involve network latency
    Git - the fast version control system
  • 22. Comparison with SVN
    Subversion
    Centralized
    Branching can be a pain and is used sparingly
    Conflicts frequently occur and renaming is not handled well
    Can be slow due to network latency
    Can consume quite some disk space
    Git
    Distributed
    Branching is very easy and is a core concept
    Conflicts occur less frequent, renaming is properly handled
    Very fast since less operations involve network latency
    Consumes 30 times less disk space
    Git - the fast version control system
  • 23. Distributed version control
    The new generation of version control
    Git - the fast version control system
  • 24. A basic, centralized version control system
    Users commit changes to the central repository and a new version is born to be checked out by other users
    Git - the fast version control system
  • 25. A distributed version control system
    Each user has a full local copy of the repository. Users commit changes and when they want to share it, the push it to the shared repository
    Git - the fast version control system
  • 26. Git usage
    Basic operations
    Git - the fast version control system
  • 27. Tracking a project..
    Git - the fast version control system
  • 28. Tracking a project..
    Mirror the central server
    Anything the main repository can do, you can do!
    Git - the fast version control system
  • 29. Tracking a project..
    My project is tiny - git is overkill
    “Why would I carry a Swiss knife when I only want to open cans?”
    Git - the fast version control system
  • 30. Tracking a project..
    Tiny projects should be scalable too!
    “You wouldn’t use Roman digits just because you perform calculations with small numbers, now would you?”
    Tiny projects may grow beyond your expectations
    “One day you’ll desperately need that hex wrench and you’re stuck with your plain can-opener”
    Git - the fast version control system
  • 31. Tracking a project..
    Pretty straightforwarded, huh?
    Git - the fast version control system
  • 32. Advanced committing…
    What if you screw up?
    #re-edit the metadata and update the tree
    $ git commit --amend
    or
    # toss your latest commit away without changing the working tree
    $ git reset HEAD^
    Git - the fast version control system
  • 33. Solving conflicts
    Instant merging
    Git - the fast version control system
  • 34. Closer look at pulling..
    Git - the fast version control system
  • 35. Auto-merging..
    What actually happens…
    # Fetch latest changes from origin
    $ git fetch
    # Merge fetched changes into current branch
    $ git merge refs/heads/master
    Git - the fast version control system
  • 36. Auto-merging..
    What actually happens…
    Recursive merge strategy – create a merged reference tree of common ancestors for three-way merge
    • fewer merge conflicts
    • 37. can detect and handle renames
    Git - the fast version control system
  • 38. Resolving conflicts..
    Suppose Jeff and Dan both made changes to the same line in file…
    CONFLICT (content): Merge conflict in file
    Automatic merge failed; fix conflicts and then commit the result.
    Uh oh…. now what?
    Git - the fast version control system
  • 39. Resolving conflicts..
    Well, just merge manually…
    # run your favourite file merge application
    $ git mergetool –t opendiff
    Git - the fast version control system
  • 40. Git - the fast version control system
    source: http://gitguru.com
  • 41. Resolving conflicts..
    …and commit!
    # commit to resolve the conflict
    $ git commit
    Git - the fast version control system
  • 42. Branching
    A core concept
    Git - the fast version control system
  • 43. Creating a branch..
    Git - the fast version control system
  • 44. Creating a branch..
    Or create and switch to a branch based on another branch
    $ git checkout –b new_branch other_branch
    Git - the fast version control system
  • 45. Some common scenarios…
    Git - the fast version control system
    Why would I require branching?
  • 46. Scenario 1 – Interrupted workflow
    You’re finished with part 1 of a new feature but you can’t continue with part 2 before part 1 is released and tested
    Git - the fast version control system
  • 47. Scenario 1 – Interrupted workflow
    You’re finished with part 1 of a new feature but you can’t continue with part 2 before part 1 is released and tested
    Git - the fast version control system
  • 48. Scenario 2 – Quick fixes
    While you’re busy implementing some feature suddenly you’re being told to drop everything and fix a newly discovered bug
    Git - the fast version control system
  • 49. Scenario 2 – Quick fixes
    While you’re busy implementing some feature suddenly you’re being told to drop everything and fix a newly discovered bug
    Git - the fast version control system
  • 50. Git usage overview
    Just to summarize…
    Git - the fast version control system
  • 51. Git command sequence
    Source: http://git.or.cz
    Git - the fast version control system
  • 52. Tooling
    Stuck at ‘Ye Olde Terminal’? Not necessarily…
    Git - the fast version control system
  • 53. Git UI front-ends
    Git - the fast version control system
  • 54.
    • OpenInGitGui
    Git - the fast version control system
    Finder extension
  • 55.
    • OpenInGitGui
    Git - the fast version control system
    Finder extension
    • TortoiseGit
    • 56. Git Extensions
    Windows Explorer extensions
  • 57.
    • OpenInGitGui
    Git - the fast version control system
    Finder extension
    • TortoiseGit
    • 58. Git Extensions
    Windows Explorer extensions
    • JGit / EGit
    Eclipse integration
  • 59. Conclusion
    Why switch to Git?
    Git - the fast version control system
  • 60. Reasons to switch to Git
    Endless, easy, non-file-system-based, local branches
    Enhanced merging strategy
    Performance
    Advanced features enable better workflow
    Stashing temporary work
    Collaboration before public commits
    Git - the fast version control system
  • 61. Closing and Q&A
    References
    Git: http://git-scm.com/download
    Git Docs: http://git-scm.com/documentation
    GitX: http://gitx.frim.nl/
    TortoiseGit: http://code.google.com/p/tortoisegit/
    Git Extensions: http://sourceforge.net/projects/gitextensions/
    JGit / EGit: http://www.eclipse.org/egit/
    Git - the fast version control system