• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Git the fast version control system
 

Git the fast version control system

on

  • 2,712 views

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

Statistics

Views

Total Views
2,712
Views on SlideShare
2,663
Embed Views
49

Actions

Likes
2
Downloads
73
Comments
0

3 Embeds 49

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

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

    Git the fast version control system Git the fast version control system Presentation Transcript

    • Git
      The fast version control system
      Jeroen Rosenberg jeroen.rosenberg@gmail.com
    • 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
    • Version control
      Short introduction
      Git - the fast version control system
    • 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
    • Version control (2)
      Benefits
      Git - the fast version control system
    • Version control (2)
      Benefits
      Allows a team to share code
      Git - the fast version control system
    • 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
    • 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
    • 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
    • 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
    • Glossary
      Some commonly used terms explained before moving on
      Git - the fast version control system
    • 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
    • Version control systems
      Git - the fast version control system
    • Very limited and inflexible
      Concurrent Versions System (CVS)
      Git - the fast version control system
    • 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
    • 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
    • Comparison with SVN
      Subversion
      Git
      Git - the fast version control system
    • Comparison with SVN
      Subversion
      Centralized
      Git
      Distributed
      Git - the fast version control system
    • 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
    • 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
    • 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
    • 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
    • Distributed version control
      The new generation of version control
      Git - the fast version control system
    • 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
    • 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
    • Git usage
      Basic operations
      Git - the fast version control system
    • Tracking a project..
      Git - the fast version control system
    • Tracking a project..
      Mirror the central server
      Anything the main repository can do, you can do!
      Git - the fast version control system
    • 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
    • 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
    • Tracking a project..
      Pretty straightforwarded, huh?
      Git - the fast version control system
    • 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
    • Solving conflicts
      Instant merging
      Git - the fast version control system
    • Closer look at pulling..
      Git - the fast version control system
    • 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
    • Auto-merging..
      What actually happens…
      Recursive merge strategy – create a merged reference tree of common ancestors for three-way merge
      • fewer merge conflicts
      • can detect and handle renames
      Git - the fast version control system
    • 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
    • Resolving conflicts..
      Well, just merge manually…
      # run your favourite file merge application
      $ git mergetool –t opendiff
      Git - the fast version control system
    • Git - the fast version control system
      source: http://gitguru.com
    • Resolving conflicts..
      …and commit!
      # commit to resolve the conflict
      $ git commit
      Git - the fast version control system
    • Branching
      A core concept
      Git - the fast version control system
    • Creating a branch..
      Git - the fast version control system
    • 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
    • Some common scenarios…
      Git - the fast version control system
      Why would I require branching?
    • 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
    • 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
    • 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
    • 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
    • Git usage overview
      Just to summarize…
      Git - the fast version control system
    • Git command sequence
      Source: http://git.or.cz
      Git - the fast version control system
    • Tooling
      Stuck at ‘Ye Olde Terminal’? Not necessarily…
      Git - the fast version control system
    • Git UI front-ends
      Git - the fast version control system
      • OpenInGitGui
      Git - the fast version control system
      Finder extension
      • OpenInGitGui
      Git - the fast version control system
      Finder extension
      • TortoiseGit
      • Git Extensions
      Windows Explorer extensions
      • OpenInGitGui
      Git - the fast version control system
      Finder extension
      • TortoiseGit
      • Git Extensions
      Windows Explorer extensions
      • JGit / EGit
      Eclipse integration
    • Conclusion
      Why switch to Git?
      Git - the fast version control system
    • 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
    • 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