Git Software

Git Software

Git Software

  • A free distributed revision control and source code management (SCM) system
    • User Interface is similar to other version control systems
    • Contains complete history and full revision tracking capabilities
  • A very fast decentralized SCM tool
    • Not dependent on network access or a central server
    • Every working directory is a full-fledged repository
  • A mini file system with versioning and other tools built on top of it
    • Employs a set of snapshots rather than storing changes to a base version of each file
    • Takes a 'picture' of your files at commit time and stores a reference to that snapshot
    • Creates a link to previously stored files when the file has not changed
  • A tool for designing Version Control System (VCS) workflows

Git Behavior

  • Git does not suffer from the network latency of other revision control systems
    • The entire history of the project is stored on your local disk
    • Most operations occur very rapidly because they only require local files and resources
    • Generally, no information is needed from other computers
  • Git stores everything in the Git database addressable by a SHA-1 hash
    • Composed of 40 hexadecimal characters (0–9 and a–f)
    • Calculated based on the contents of a file or directory structure in Git
    • Looks like this: 24b9da6552252987aa493b52f8696cd6d3b00373
    • Used for guaranteering data integrity (checksumming)

Git Projects

  • Git has three main states that your files can reside in
    • Committed refers to data that is safely stored in a snaphot in your local database
    • Modified refers to changed data that has not been committed to your database yet
    • Staged refers to modified data that has been marked to be included in your next commit snapshot
  • Git Projects contain three main sections
    • The Git directory stores the metadata and object database for your project
    • The working directory
    • The staging area

Git Feature Development Workflow

  • Pull in the most recent changes to update your local master
    • This should never create a merge commit because we are never working directly in master
    • Run tests directly afterwards to verify changes are compatible
  • Check out a feature branch
  • Do work in your feature branch, committing early and often
    • Run tests before you commit
    • Commit whenever your tests pass
  • Rebase frequently to incorporate upstream changes
    • This prevents your branch from diverging significantly
  • Interactive rebase your commits
    • Uses the most recent commit in master as the base
    • Squashes them into one
  • Merge your changes with master
  • Push your changes to the upstream

Git For Windows

Git Extensions

  • A graphical user interface for Git
  • Enables control of Git without using the command line
  • Provides a user manual and video tutorials


  • A web-based hosting service for software development projects that use the Git revision control system
  • Offers both paid plans for private repositories, and free accounts for open source projects
  • Provides social networking functionality to display how developers work on their versions of a repository
    • The network graph of commits to track of what other contributors have done
    • Feeds
    • Followers