Pro Git (2nd Edition)
Free

Pro Git (2nd Edition)

By Scott Chacon
Free
Book Description

Pro Git (Second Edition) is your fully-updated guide to Git and its usage in the modern world. Git has come a long way since it was first developed by Linus Torvalds for Linux kernel development. It has taken the open source world by storm since its inception in 2005, and this book teaches you how to use it like a pro.



Effective and well-implemented version control is a necessity for successful web projects, whether large or small. With this book you’ll learn how to master the world of distributed version workflow, use the distributed features of Git to the full, and extend Git to meet your every need.



Written by Git pros Scott Chacon and Ben Straub, Pro Git (Second Edition) builds on the hugely successful first edition, and is now fully updated for Git version 2.0, as well as including an indispensable chapter on GitHub. It’s the best book for all your Git needs.



What you’ll learn


  • Effectively use Git, either as a programmer or a project leader

  • Become a fluent Git user

  • Master branching, using Git on the server, and on other systems

  • Integrate Git in your development workflow

  • Migrate programming projects from other SCMs to Git

  • Extend Git for your personal project needs

  • Effectively use GitHub


This book is for all open source developers: you are bound to encounter Git somewhere in the course of your working life. Proprietary software developers will appreciate Git’s enormous scalability, since it is used for the Linux project, which comprises thousands of developers and testers.


Print versions available via links on the git-scm website. See also the first edition, which has been translated into 한국어, Deutsch, 日本語, Русский, français, 简体中文 and other languages.

Table of Contents
  • Pro Git
  • Preface by Scott Chacon
  • Preface by Ben Straub
  • Dedications
  • Contributors
  • Introduction
  • 1. Getting Started
    • About Version Control
      • Local Version Control Systems
      • Centralized Version Control Systems
      • Distributed Version Control Systems
    • A Short History of Git
    • Git Basics
      • Snapshots, Not Differences
      • Nearly Every Operation Is Local
      • Git Has Integrity
      • Git Generally Only Adds Data
      • The Three States
    • The Command Line
    • Installing Git
      • Installing on Linux
      • Installing on Mac
      • Installing on Windows
      • Installing from Source
    • First-Time Git Setup
      • Your Identity
      • Your Editor
      • Checking Your Settings
    • Getting Help
    • Summary
  • 2. Git Basics
    • Getting a Git Repository
      • Initializing a Repository in an Existing Directory
      • Cloning an Existing Repository
    • Recording Changes to the Repository
      • Checking the Status of Your Files
      • Tracking New Files
      • Staging Modified Files
      • Short Status
      • Ignoring Files
      • Viewing Your Staged and Unstaged Changes
      • Committing Your Changes
      • Skipping the Staging Area
      • Removing Files
      • Moving Files
    • Viewing the Commit History
      • Limiting Log Output
    • Undoing Things
      • Unstaging a Staged File
      • Unmodifying a Modified File
    • Working with Remotes
      • Showing Your Remotes
      • Adding Remote Repositories
      • Fetching and Pulling from Your Remotes
      • Pushing to Your Remotes
      • Inspecting a Remote
      • Removing and Renaming Remotes
    • Tagging
      • Listing Your Tags
      • Creating Tags
      • Annotated Tags
      • Lightweight Tags
      • Tagging Later
      • Sharing Tags
      • Checking out Tags
    • Git Aliases
    • Summary
  • 3. Git Branching
    • Branches in a Nutshell
      • Creating a New Branch
      • Switching Branches
    • Basic Branching and Merging
      • Basic Branching
      • Basic Merging
      • Basic Merge Conflicts
    • Branch Management
    • Branching Workflows
      • Long-Running Branches
      • Topic Branches
    • Remote Branches
      • Pushing
      • Tracking Branches
      • Pulling
      • Deleting Remote Branches
    • Rebasing
      • The Basic Rebase
      • More Interesting Rebases
      • The Perils of Rebasing
      • Rebase When You Rebase
      • Rebase vs. Merge
    • Summary
  • 4. Git on the Server
    • The Protocols
      • Local Protocol
        • The Pros
        • The Cons
      • The HTTP Protocols
        • Smart HTTP
        • Dumb HTTP
        • The Pros
        • The Cons
      • The SSH Protocol
        • The Pros
        • The Cons
      • The Git Protocol
        • The Pros
        • The Cons
    • Getting Git on a Server
      • Putting the Bare Repository on a Server
      • Small Setups
        • SSH Access
    • Generating Your SSH Public Key
    • Setting Up the Server
    • Git Daemon
    • Smart HTTP
    • GitWeb
    • GitLab
      • Installation
      • Administration
        • Users
        • Groups
        • Projects
        • Hooks
      • Basic Usage
      • Working Together
    • Third Party Hosted Options
    • Summary
  • 5. Distributed Git
    • Distributed Workflows
      • Centralized Workflow
      • Integration-Manager Workflow
      • Dictator and Lieutenants Workflow
      • Workflows Summary
    • Contributing to a Project
      • Commit Guidelines
      • Private Small Team
      • Private Managed Team
      • Forked Public Project
      • Public Project over E-Mail
      • Summary
    • Maintaining a Project
      • Working in Topic Branches
      • Applying Patches from E-mail
        • Applying a Patch with apply
        • Applying a Patch with am
      • Checking Out Remote Branches
      • Determining What Is Introduced
      • Integrating Contributed Work
        • Merging Workflows
        • Large-Merging Workflows
        • Rebasing and Cherry Picking Workflows
        • Rerere
      • Tagging Your Releases
      • Generating a Build Number
      • Preparing a Release
      • The Shortlog
    • Summary
  • 6. GitHub
    • Account Setup and Configuration
      • SSH Access
      • Your Avatar
      • Your Email Addresses
      • Two Factor Authentication
    • Contributing to a Project
      • Forking Projects
      • The GitHub Flow
        • Creating a Pull Request
        • Iterating on a Pull Request
      • Advanced Pull Requests
        • Pull Requests as Patches
        • Keeping up with Upstream
        • References
      • Markdown
        • GitHub Flavored Markdown
          • Task Lists
          • Code Snippets
          • Quoting
          • Emoji
          • Images
    • Maintaining a Project
      • Creating a New Repository
      • Adding Collaborators
      • Managing Pull Requests
        • Email Notifications
        • Collaborating on the Pull Request
        • Pull Request Refs
        • Pull Requests on Pull Requests
      • Mentions and Notifications
        • The Notifications Page
          • Web Notifications
          • Email Notifications
      • Special Files
      • README
      • CONTRIBUTING
      • Project Administration
        • Changing the Default Branch
        • Transferring a Project
    • Managing an organization
      • Organization Basics
      • Teams
      • Audit Log
    • Scripting GitHub
      • Hooks
        • Services
        • Hooks
      • The GitHub API
      • Basic Usage
      • Commenting on an Issue
      • Changing the Status of a Pull Request
      • Octokit
    • Summary
  • 7. Git Tools
    • Revision Selection
      • Single Revisions
      • Short SHA
      • Branch References
      • RefLog Shortnames
      • Ancestry References
      • Commit Ranges
        • Double Dot
        • Multiple Points
        • Triple Dot
    • Interactive Staging
      • Staging and Unstaging Files
      • Staging Patches
    • Stashing and Cleaning
      • Stashing Your Work
      • Creative Stashing
      • Creating a Branch from a Stash
      • Cleaning your Working Directory
    • Signing Your Work
      • GPG Introduction
      • Signing Tags
      • Verifying Tags
      • Signing Commits
      • Everyone Must Sign
    • Searching
      • Git Grep
      • Git Log Searching
        • Line Log Search
    • Rewriting History
      • Changing the Last Commit
      • Changing Multiple Commit Messages
      • Reordering Commits
      • Squashing Commits
      • Splitting a Commit
      • The Nuclear Option: filter-branch
        • Removing a File from Every Commit
        • Making a Subdirectory the New Root
        • Changing E-Mail Addresses Globally
    • Reset Demystified
      • The Three Trees
        • The HEAD
        • The Index
        • The Working Directory
      • The Workflow
      • The Role of Reset
        • Step 1: Move HEAD
        • Step 2: Updating the Index (--mixed)
        • Step 3: Updating the Working Directory (--hard)
        • Recap
      • Reset With a Path
      • Squashing
      • Check It Out
        • Without Paths
        • With Paths
      • Summary
    • Advanced Merging
      • Merge Conflicts
        • Aborting a Merge
        • Ignoring Whitespace
        • Manual File Re-merging
        • Checking Out Conflicts
        • Merge Log
        • Combined Diff Format
      • Undoing Merges
        • Fix the references
        • Reverse the commit
      • Other Types of Merges
        • Our or Theirs Preference
        • Subtree Merging
    • Rerere
    • Debugging with Git
      • File Annotation
      • Binary Search
    • Submodules
      • Starting with Submodules
      • Cloning a Project with Submodules
      • Working on a Project with Submodules
        • Pulling in Upstream Changes
        • Working on a Submodule
        • Publishing Submodule Changes
        • Merging Submodule Changes
      • Submodule Tips
        • Submodule Foreach
        • Useful Aliases
      • Issues with Submodules
    • Bundling
    • Replace
    • Credential Storage
      • Under the Hood
      • A Custom Credential Cache
    • Summary
  • 8. Customizing Git
    • Git Configuration
      • Basic Client Configuration
        • core.editor
        • commit.template
        • core.pager
        • user.signingkey
        • core.excludesfile
        • help.autocorrect
      • Colors in Git
        • color.ui
        • color.*
      • External Merge and Diff Tools
      • Formatting and Whitespace
        • core.autocrlf
        • core.whitespace
      • Server Configuration
        • receive.fsckObjects
        • receive.denyNonFastForwards
        • receive.denyDeletes
    • Git Attributes
      • Binary Files
        • Identifying Binary Files
        • Diffing Binary Files
      • Keyword Expansion
      • Exporting Your Repository
        • export-ignore
        • export-subst
      • Merge Strategies
    • Git Hooks
      • Installing a Hook
      • Client-Side Hooks
        • Committing-Workflow Hooks
        • E-mail Workflow Hooks
        • Other Client Hooks
      • Server-Side Hooks
        • pre-receive
        • update
        • post-receive
    • An Example Git-Enforced Policy
      • Server-Side Hook
        • Enforcing a Specific Commit-Message Format
        • Enforcing a User-Based ACL System
        • Testing It Out
      • Client-Side Hooks
    • Summary
  • 9. Git and Other Systems
    • Git as a Client
      • Git and Subversion
        • git svn
        • Setting Up
        • Getting Started
        • Committing Back to Subversion
        • Pulling in New Changes
        • Git Branching Issues
        • Subversion Branching
        • Creating a New SVN Branch
        • Switching Active Branches
        • Subversion Commands
          • SVN Style History
          • SVN Annotation
          • SVN Server Information
          • Ignoring What Subversion Ignores
        • Git-Svn Summary
      • Git and Mercurial
        • git-remote-hg
        • Getting Started
        • Workflow
        • Branches and Bookmarks
        • Mercurial Summary
      • Git and Perforce
        • Git Fusion
          • Setting Up
          • Fusion Configuration
          • Workflow
          • Git-Fusion Summary
        • Git-p4
          • Setting Up
          • Getting Started
          • Workflow
          • Branching
        • Git and Perforce Summary
      • Git and TFS
        • Which Tool
        • Getting Started: git-tf
        • Getting Started: git-tfs
        • Git-tf[s] Workflow
        • Workflow: git-tf
        • Workflow: git-tfs
        • Git and TFS Summary
    • Migrating to Git
      • Subversion
      • Mercurial
      • Perforce
        • Perforce Git Fusion
        • Git-p4
      • TFS
      • A Custom Importer
    • Summary
  • 10. Git Internals
    • Plumbing and Porcelain
    • Git Objects
      • Tree Objects
      • Commit Objects
      • Object Storage
    • Git References
      • The HEAD
      • Tags
      • Remotes
    • Packfiles
    • The Refspec
      • Pushing Refspecs
      • Deleting References
    • Transfer Protocols
      • The Dumb Protocol
      • The Smart Protocol
        • Uploading Data
          • SSH
          • HTTP(S)
        • Downloading Data
          • SSH
          • HTTP(S)
      • Protocols Summary
    • Maintenance and Data Recovery
      • Maintenance
      • Data Recovery
      • Removing Objects
    • Environment Variables
      • Global Behavior
      • Repository Locations
      • Pathspecs
      • Committing
      • Networking
      • Diffing and Merging
      • Debugging
      • Miscellaneous
    • Summary
  • A. Git in Other Environments
    • Graphical Interfaces
      • gitk and git-gui
      • GitHub for Mac and Windows
        • Installation
        • Recommended Workflow
        • Summary
      • Other GUIs
    • Git in Visual Studio
    • Git in Eclipse
    • Git in Bash
    • Git in Zsh
    • Git in Powershell
    • Summary
  • B. Embedding Git in your Applications
    • Command-line Git
    • Libgit2
      • Advanced Functionality
      • Other Bindings
        • LibGit2Sharp
        • objective-git
        • pygit2
      • Further Reading
    • JGit
      • Getting Set Up
      • Plumbing
      • Porcelain
      • Further Reading
  • C. Git Commands
    • Setup and Config
      • git config
      • git help
    • Getting and Creating Projects
      • git init
      • git clone
    • Basic Snapshotting
      • git add
      • git status
      • git diff
      • git difftool
      • git commit
      • git reset
      • git rm
      • git mv
      • git clean
    • Branching and Merging
      • git branch
      • git checkout
      • git merge
      • git mergetool
      • git log
      • git stash
      • git tag
    • Sharing and Updating Projects
      • git fetch
      • git pull
      • git push
      • git remote
      • git archive
      • git submodule
    • Inspection and Comparison
      • git show
      • git shortlog
      • git describe
    • Debugging
      • git bisect
      • git blame
      • git grep
    • Patching
      • git cherry-pick
      • git rebase
      • git revert
    • Email
      • git apply
      • git am
      • git format-patch
      • git send-email
      • git request-pull
    • External Systems
      • git svn
      • git fast-import
    • Administration
      • git gc
      • git fsck
      • git reflog
      • git filter-branch
    • Plumbing Commands
  • Index
    No review for this book yet, be the first to review.
      No comment for this book yet, be the first to comment
      You May Also Like
      Also Available On
      App store smallGoogle play small
      Categories
      Curated Lists
      • Pattern Recognition and Machine Learning (Information Science and Statistics)
        by Christopher M. Bishop
        Data mining
        by I. H. Witten
        The Elements of Statistical Learning: Data Mining, Inference, and Prediction
        by Various
        See more...
      • CK-12 Chemistry
        by Various
        Concept Development Studies in Chemistry
        by John Hutchinson
        An Introduction to Chemistry - Atoms First
        by Mark Bishop
        See more...
      • Microsoft Word - How to Use Advanced Algebra II.doc
        by Jonathan Emmons
        Advanced Algebra II: Activities and Homework
        by Kenny Felder
        de2de
        by
        See more...
      • The Sun Who Lost His Way
        by
        Tania is a Detective
        by Kanika G
        Firenze_s-Light
        by
        See more...
      • Java 3D Programming
        by Daniel Selman
        The Java EE 6 Tutorial
        by Oracle Corporation
        JavaKid811
        by
        See more...