Preface 1.Introduction Background The Birth of Git Precedents Time Line Whats in a Name? 2.Installing Git Using Linux Binary Distributions Debian/Ubuntu Other Binary Distributions Obtaining a Source Release Building and Installing Installing Git on Windows Installing the Cygwin Git Package Installing Standalone Git (msysGit) 3.Getting Started The Git Command Line Quick Introduction to Using Git Creating an Initial Repository Adding a File to Your Repository Configuring the Commit Author Making Another Commit Viewing Your Commits Viewing Commit Differences Removing and Renaming Files in Your Repository Making a Copy of Your Repository Configuration Files. Configuring an Alias Inquiry 4.Basic Git Concepts Basic Concepts Repositories Git Object Types Index Content-Addressable Names Git Tracks Content Pathname Versus Content Object Store Pictures Git Concepts at Work Inside the .git directory Objects, Hashes, and Blobs Files and Trees A Note on Gits Use of SHA1 Tree Hierarchies Commits Tags 5.File Management and the Index Its All About the Index File Classifications in Git Using git add Some Notes on Using git commit Using git commit ——all Writing Commit Log Messages Using git rm Using git mv A Note on Tracking Renames The .gitignore File A Detailed View of Gits Object Model and Files 6.Commits Atomic Changesets Identifying Commits Absolute Commit Names refs and symrefs Relative Commit Names Commit History Viewing Old Commits Commit Graphs Commit Ranges Finding Commits Using git bisect Using git blame Using Pickaxe 7. Branches Reasons for Using Branches Branch Names Dos and Donts in Branch Names Using BrancheS Creating Branches Listing Branch Names Viewing Branches Checking Out Branches A Basic Example of Checking Out a Branch Checking Out When You Have Uncommitted Changes Merging Changes into a Different Branch Creating and Checking Out a New Branch Detached HEAD Branches Deleting Branches 8.Diffs Forms of the git diff Command Simple git diff Example git diff and Commit Ranges git diff with Path Limiting Comparing How Subversion and Git Derive dills 9. Merges Merge Examples Preparing for a Merge Merging Two Branches A Merge with a Conflict Working with Merge Conflicts Locating Conflicted Files Inspecting Conflicts How Git Keeps Track of Conflicts Finishing Up a Conflict Resolution Aborting or Restarting a Merge Merge Strategies Degenerate Merges Normal Merges Specialty Merges Merge Drivers How Git .Thinks About Merges Merges and Gits Object Model Squash Merges Why Not Just Merge Each Change One by One? 10. Altering Commits Caution About Altering History Using git reset Using git cherry-pick Using git revert reset, revert, and checkout Changing the Top Commit Rebasing Commits Using git rebase -i rebase Versus merge 11. Remote Repositories Repository Concepts Bare and Development Repositories Repository Clones Remotes Tracking Branches Referencing Other Repositories Referring to Remote Repositories The refspec Example Using Remote Repositories Creating an Authoritative Repository Make Your Own origin Remote Developing in Your Repository Pushing Your Changes Adding a New Developer Getting Repository Updates Remote Repository Operations in Pictures Cloning a Repository Alternate Histories Non-Fast-Forward Pushes Fetching the Alternate History Merging Histories Merge Conflicts Pushing a Merged History Adding and Deleting Remote Branches 13.Patches 14.Hooks 15.Combining Projects 16.Using Git with Subversion Repositories lndex