Pro Git (2nd Edition)
Scott Chacon
Computers & Technology
Pro Git (2nd Edition)
Description
Contents
Reviews

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.

Language
English
ISBN
Unknown
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
The book hasn't received reviews yet.