[![Git](https://git-scm.com/images/logo@2x.png)](https://git-scm.com/) --distributed-even-if-your-workflow-isnt
![](https://git-scm.com/images/dark-mode.svg)
  * [About](https://git-scm.com/about)
    * [Trademark](https://git-scm.com/about/trademark)
  * [Learn](https://git-scm.com/learn)
    * [Book](https://git-scm.com/book)
    * [Cheat Sheet](https://git-scm.com/cheat-sheet)
    * [Videos](https://git-scm.com/videos)
    * [External Links](https://git-scm.com/doc/ext)
  * [Tools](https://git-scm.com/tools)
    * [Command Line](https://git-scm.com/tools/command-line)
    * [GUIs](https://git-scm.com/tools/guis)
    * [Hosting](https://git-scm.com/tools/hosting)
  * [Reference](https://git-scm.com/docs)
  * [Install](https://git-scm.com/install/linux)
  * [Community](https://git-scm.com/community)


* * *
This book is available in [English](https://git-scm.com/book/en).
Full translation available in
[azərbaycan dili](https://git-scm.com/book/az),
---
[български език](https://git-scm.com/book/bg),
[Deutsch](https://git-scm.com/book/de),
[Español](https://git-scm.com/book/es),
[فارسی](https://git-scm.com/book/fa),
[Français](https://git-scm.com/book/fr),
[Ελληνικά](https://git-scm.com/book/gr),
[日本語](https://git-scm.com/book/ja),
[한국어](https://git-scm.com/book/ko),
[Nederlands](https://git-scm.com/book/nl),
[Русский](https://git-scm.com/book/ru),
[Slovenščina](https://git-scm.com/book/sl),
[Tagalog](https://git-scm.com/book/tl),
[Українська](https://git-scm.com/book/uk),
[简体中文](https://git-scm.com/book/zh),
Partial translations available in
[Čeština](https://git-scm.com/book/cs),
---
[Македонски](https://git-scm.com/book/mk),
[Polski](https://git-scm.com/book/pl),
[Српски](https://git-scm.com/book/sr),
[Ўзбекча](https://git-scm.com/book/uz),
[繁體中文](https://git-scm.com/book/zh-tw),
Translations started for
[Беларуская](https://git-scm.com/book/be),
---
[Indonesian](https://git-scm.com/book/id),
[Italiano](https://git-scm.com/book/it),
[Bahasa Melayu](https://git-scm.com/book/ms),
[Português (Brasil)](https://git-scm.com/book/pt-br),
[Português (Portugal)](https://git-scm.com/book/pt-pt),
[Svenska](https://git-scm.com/book/sv),
[Türkçe](https://git-scm.com/book/tr).
* * *
The source of this book is [hosted on GitHub.](https://github.com/progit/progit2)
Patches, suggestions and comments are welcome.
# Book
![](https://git-scm.com/images/progit2.png)
2nd Edition (2014)
## Download Ebook
[![](https://git-scm.com/images/pdf.png)](https://github.com/progit/progit2/releases/download/2.1.449/progit.pdf) [![](https://git-scm.com/images/epub.png)](https://github.com/progit/progit2/releases/download/2.1.449/progit.epub)
The entire Pro Git book, written by Scott Chacon and Ben Straub and published by Apress, is available here. All content is licensed under the [Creative Commons Attribution Non Commercial Share Alike 3.0 license](https://creativecommons.org/licenses/by-nc-sa/3.0/). Print versions of the book are available on [Amazon.com](https://www.amazon.com/Pro-Git-Scott-Chacon/dp/1484200772?ie=UTF8&camp=1789&creative=9325&creativeASIN=1430218339&linkCode=as2&tag=git-sfconservancy-20).
The version found here has been updated with corrections and additions from [hundreds of contributors](https://github.com/progit/progit2/graphs/contributors). If you see an error or have a suggestion, patches and issues are welcome in its [GitHub repository](https://github.com/progit/progit2).
  1. ## 1. [Getting Started](https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control)
    1. 1.1 [About Version Control](https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control)
    2. 1.2 [A Short History of Git](https://git-scm.com/book/en/v2/Getting-Started-A-Short-History-of-Git)
    3. 1.3 [What is Git?](https://git-scm.com/book/en/v2/Getting-Started-What-is-Git%3F)
    4. 1.4 [The Command Line](https://git-scm.com/book/en/v2/Getting-Started-The-Command-Line)
    5. 1.5 [Installing Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
    6. 1.6 [First-Time Git Setup](https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup)
    7. 1.7 [Getting Help](https://git-scm.com/book/en/v2/Getting-Started-Getting-Help)
    8. 1.8 [Summary](https://git-scm.com/book/en/v2/Getting-Started-Summary)
  2. ## 2. [Git Basics](https://git-scm.com/book/en/v2/Git-Basics-Getting-a-Git-Repository)
    1. 2.1 [Getting a Git Repository](https://git-scm.com/book/en/v2/Git-Basics-Getting-a-Git-Repository)
    2. 2.2 [Recording Changes to the Repository](https://git-scm.com/book/en/v2/Git-Basics-Recording-Changes-to-the-Repository)
    3. 2.3 [Viewing the Commit History](https://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History)
    4. 2.4 [Undoing Things](https://git-scm.com/book/en/v2/Git-Basics-Undoing-Things)
    5. 2.5 [Working with Remotes](https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes)
    6. 2.6 [Tagging](https://git-scm.com/book/en/v2/Git-Basics-Tagging)
    7. 2.7 [Git Aliases](https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases)
    8. 2.8 [Summary](https://git-scm.com/book/en/v2/Git-Basics-Summary)
  3. ## 3. [Git Branching](https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell)
    1. 3.1 [Branches in a Nutshell](https://git-scm.com/book/en/v2/Git-Branching-Branches-in-a-Nutshell)
    2. 3.2 [Basic Branching and Merging](https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging)
    3. 3.3 [Branch Management](https://git-scm.com/book/en/v2/Git-Branching-Branch-Management)
    4. 3.4 [Branching Workflows](https://git-scm.com/book/en/v2/Git-Branching-Branching-Workflows)
    5. 3.5 [Remote Branches](https://git-scm.com/book/en/v2/Git-Branching-Remote-Branches)
    6. 3.6 [Rebasing](https://git-scm.com/book/en/v2/Git-Branching-Rebasing)
    7. 3.7 [Summary](https://git-scm.com/book/en/v2/Git-Branching-Summary)
  4. ## 4. [Git on the Server](https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols)
    1. 4.1 [The Protocols](https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols)
    2. 4.2 [Getting Git on a Server](https://git-scm.com/book/en/v2/Git-on-the-Server-Getting-Git-on-a-Server)
    3. 4.3 [Generating Your SSH Public Key](https://git-scm.com/book/en/v2/Git-on-the-Server-Generating-Your-SSH-Public-Key)
    4. 4.4 [Setting Up the Server](https://git-scm.com/book/en/v2/Git-on-the-Server-Setting-Up-the-Server)
    5. 4.5 [Git Daemon](https://git-scm.com/book/en/v2/Git-on-the-Server-Git-Daemon)
    6. 4.6 [Smart HTTP](https://git-scm.com/book/en/v2/Git-on-the-Server-Smart-HTTP)
    7. 4.7 [GitWeb](https://git-scm.com/book/en/v2/Git-on-the-Server-GitWeb)
    8. 4.8 [GitLab](https://git-scm.com/book/en/v2/Git-on-the-Server-GitLab)
    9. 4.9 [Third Party Hosted Options](https://git-scm.com/book/en/v2/Git-on-the-Server-Third-Party-Hosted-Options)
    10. 4.10 [Summary](https://git-scm.com/book/en/v2/Git-on-the-Server-Summary)
  5. ## 5. [Distributed Git](https://git-scm.com/book/en/v2/Distributed-Git-Distributed-Workflows)
    1. 5.1 [Distributed Workflows](https://git-scm.com/book/en/v2/Distributed-Git-Distributed-Workflows)
    2. 5.2 [Contributing to a Project](https://git-scm.com/book/en/v2/Distributed-Git-Contributing-to-a-Project)
    3. 5.3 [Maintaining a Project](https://git-scm.com/book/en/v2/Distributed-Git-Maintaining-a-Project)
    4. 5.4 [Summary](https://git-scm.com/book/en/v2/Distributed-Git-Summary)
  6. ## 6. [GitHub](https://git-scm.com/book/en/v2/GitHub-Account-Setup-and-Configuration)
    1. 6.1 [Account Setup and Configuration](https://git-scm.com/book/en/v2/GitHub-Account-Setup-and-Configuration)
    2. 6.2 [Contributing to a Project](https://git-scm.com/book/en/v2/GitHub-Contributing-to-a-Project)
    3. 6.3 [Maintaining a Project](https://git-scm.com/book/en/v2/GitHub-Maintaining-a-Project)
    4. 6.4 [Managing an organization](https://git-scm.com/book/en/v2/GitHub-Managing-an-organization)
    5. 6.5 [Scripting GitHub](https://git-scm.com/book/en/v2/GitHub-Scripting-GitHub)
    6. 6.6 [Summary](https://git-scm.com/book/en/v2/GitHub-Summary)
  7. ## 7. [Git Tools](https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection)
    1. 7.1 [Revision Selection](https://git-scm.com/book/en/v2/Git-Tools-Revision-Selection)
    2. 7.2 [Interactive Staging](https://git-scm.com/book/en/v2/Git-Tools-Interactive-Staging)
    3. 7.3 [Stashing and Cleaning](https://git-scm.com/book/en/v2/Git-Tools-Stashing-and-Cleaning)
    4. 7.4 [Signing Your Work](https://git-scm.com/book/en/v2/Git-Tools-Signing-Your-Work)
    5. 7.5 [Searching](https://git-scm.com/book/en/v2/Git-Tools-Searching)
    6. 7.6 [Rewriting History](https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History)
    7. 7.7 [Reset Demystified](https://git-scm.com/book/en/v2/Git-Tools-Reset-Demystified)
    8. 7.8 [Advanced Merging](https://git-scm.com/book/en/v2/Git-Tools-Advanced-Merging)
    9. 7.9 [Rerere](https://git-scm.com/book/en/v2/Git-Tools-Rerere)
    10. 7.10 [Debugging with Git](https://git-scm.com/book/en/v2/Git-Tools-Debugging-with-Git)
    11. 7.11 [Submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules)
    12. 7.12 [Bundling](https://git-scm.com/book/en/v2/Git-Tools-Bundling)
    13. 7.13 [Replace](https://git-scm.com/book/en/v2/Git-Tools-Replace)
    14. 7.14 [Credential Storage](https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage)
    15. 7.15 [Summary](https://git-scm.com/book/en/v2/Git-Tools-Summary)
  8. ## 8. [Customizing Git](https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration)
    1. 8.1 [Git Configuration](https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration)
    2. 8.2 [Git Attributes](https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes)
    3. 8.3 [Git Hooks](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks)
    4. 8.4 [An Example Git-Enforced Policy](https://git-scm.com/book/en/v2/Customizing-Git-An-Example-Git-Enforced-Policy)
    5. 8.5 [Summary](https://git-scm.com/book/en/v2/Customizing-Git-Summary)
  9. ## 9. [Git and Other Systems](https://git-scm.com/book/en/v2/Git-and-Other-Systems-Git-as-a-Client)
    1. 9.1 [Git as a Client](https://git-scm.com/book/en/v2/Git-and-Other-Systems-Git-as-a-Client)
    2. 9.2 [Migrating to Git](https://git-scm.com/book/en/v2/Git-and-Other-Systems-Migrating-to-Git)
    3. 9.3 [Summary](https://git-scm.com/book/en/v2/Git-and-Other-Systems-Summary)
  10. ## 10. [Git Internals](https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain)
    1. 10.1 [Plumbing and Porcelain](https://git-scm.com/book/en/v2/Git-Internals-Plumbing-and-Porcelain)
    2. 10.2 [Git Objects](https://git-scm.com/book/en/v2/Git-Internals-Git-Objects)
    3. 10.3 [Git References](https://git-scm.com/book/en/v2/Git-Internals-Git-References)
    4. 10.4 [Packfiles](https://git-scm.com/book/en/v2/Git-Internals-Packfiles)
    5. 10.5 [The Refspec](https://git-scm.com/book/en/v2/Git-Internals-The-Refspec)
    6. 10.6 [Transfer Protocols](https://git-scm.com/book/en/v2/Git-Internals-Transfer-Protocols)
    7. 10.7 [Maintenance and Data Recovery](https://git-scm.com/book/en/v2/Git-Internals-Maintenance-and-Data-Recovery)
    8. 10.8 [Environment Variables](https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables)
    9. 10.9 [Summary](https://git-scm.com/book/en/v2/Git-Internals-Summary)
  11. ## A1. [Appendix A: Git in Other Environments](https://git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Graphical-Interfaces)
    1. A1.1 [Graphical Interfaces](https://git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Graphical-Interfaces)
    2. A1.2 [Git in Visual Studio](https://git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Visual-Studio)
    3. A1.3 [Git in Visual Studio Code](https://git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Visual-Studio-Code)
    4. A1.4 [Git in IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine](https://git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-IntelliJ-/-PyCharm-/-WebStorm-/-PhpStorm-/-RubyMine)
    5. A1.5 [Git in Sublime Text](https://git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Sublime-Text)
    6. A1.6 [Git in Bash](https://git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Bash)
    7. A1.7 [Git in Zsh](https://git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-Zsh)
    8. A1.8 [Git in PowerShell](https://git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Git-in-PowerShell)
    9. A1.9 [Summary](https://git-scm.com/book/en/v2/Appendix-A:-Git-in-Other-Environments-Summary)
  12. ## A2. [Appendix B: Embedding Git in your Applications](https://git-scm.com/book/en/v2/Appendix-B:-Embedding-Git-in-your-Applications-Command-line-Git)
    1. A2.1 [Command-line Git](https://git-scm.com/book/en/v2/Appendix-B:-Embedding-Git-in-your-Applications-Command-line-Git)
    2. A2.2 [Libgit2](https://git-scm.com/book/en/v2/Appendix-B:-Embedding-Git-in-your-Applications-Libgit2)
    3. A2.3 [JGit](https://git-scm.com/book/en/v2/Appendix-B:-Embedding-Git-in-your-Applications-JGit)
    4. A2.4 [go-git](https://git-scm.com/book/en/v2/Appendix-B:-Embedding-Git-in-your-Applications-go-git)
    5. A2.5 [Dulwich](https://git-scm.com/book/en/v2/Appendix-B:-Embedding-Git-in-your-Applications-Dulwich)
  13. ## A3. [Appendix C: Git Commands](https://git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Setup-and-Config)
    1. A3.1 [Setup and Config](https://git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Setup-and-Config)
    2. A3.2 [Getting and Creating Projects](https://git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Getting-and-Creating-Projects)
    3. A3.3 [Basic Snapshotting](https://git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Basic-Snapshotting)
    4. A3.4 [Branching and Merging](https://git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Branching-and-Merging)
    5. A3.5 [Sharing and Updating Projects](https://git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Sharing-and-Updating-Projects)
    6. A3.6 [Inspection and Comparison](https://git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Inspection-and-Comparison)
    7. A3.7 [Debugging](https://git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Debugging)
    8. A3.8 [Patching](https://git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Patching)
    9. A3.9 [Email](https://git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Email)
    10. A3.10 [External Systems](https://git-scm.com/book/en/v2/Appendix-C:-Git-Commands-External-Systems)
    11. A3.11 [Administration](https://git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Administration)
    12. A3.12 [Plumbing Commands](https://git-scm.com/book/en/v2/Appendix-C:-Git-Commands-Plumbing-Commands)


[About this site](https://git-scm.com/site)
Patches, suggestions, and comments are welcome.
Git is a member of [Software Freedom Conservancy](https://git-scm.com/sfc)
