Pro Git

# Index

### Symbols

- $EDITOR, core.editor
- $VISUAL
  - see $EDITOR, core.editor
- .gitignore, core.excludesfile
- .NET, LibGit2Sharp
- @{upstream}, Tracking Branches
- @{u}, Tracking Branches

### A

- aliases, Git Aliases
- Apache, Smart HTTP
- Apple, objective-git
- archiving, Exporting Your Repository
- attributes, Git Attributes
- autocorrect, help.autocorrect

### B

- bash, Git in Bash
- binary files, Binary Files
- BitKeeper, A Short History of Git
- bitnami, Installation
- branches, Git Branching
  - basic workflow, Basic Branching
  - creating, Creating a New Branch
  - deleting remote, Deleting Remote Branches
  - diffing, Determining What Is Introduced
  - long-running, Long-Running Branches
  - managing, Branch Management
  - merging, Basic Merging
  - remote, Checking Out Remote Branches, Remote Branches
  - switching, Switching Branches
  - topic, Topic Branches, Working in Topic Branches
  - tracking, Tracking Branches
  - upstream, Tracking Branches
- build numbers, Generating a Build Number

### C

- C, Libgit2
- C#, LibGit2Sharp
- Cocoa, objective-git
- color, Colors in Git
- commit templates, commit.template
- contributing, Contributing to a Project
  - private managed team, Private Managed Team
  - private small team, Private Small Team
  - public large project, Public Project over Email
  - public small project, Forked Public Project
- credential caching, Installing on Windows
- credentials, Credential Storage
- crlf, core.autocrlf
- CRLF, Installing on Windows
- CVS, Centralized Version Control Systems

### D

- difftool, External Merge and Diff Tools
- distributed git, Distributed Git

### E

- Eclipse, Git in Eclipse
- editor
  - changing default, Committing Your Changes
- email, Public Project over Email
  - applying patches from, Applying Patches from Email
- excludes, core.excludesfile, Plumbing and Porcelain

### F

- files
  - moving, Moving Files
  - removing, Removing Files
- forking, Forking Projects, Integration-Manager Workflow

### G

- Git as a client, Git as a Client
- git commands
  - add, Staging Modified Files, Tracking New Files, Tracking New Files
  - am, Applying a Patch with am
  - apply, Applying a Patch with apply
  - archive, Preparing a Release
  - branch, Branch Management, Creating a New Branch
  - checkout, Switching Branches
  - cherry-pick, Rebasing and Cherry Picking Workflows
  - clone, Cloning an Existing Repository
    - bare, Getting Git on a Server
  - commit, Branches in a Nutshell, Committing Your Changes
  - config, Checking Your Settings, Committing Your Changes, First-Time Git Setup, Git Aliases, Git Configuration, Public Project over Email
  - credential, Credential Storage
  - daemon, Git Daemon
  - describe, Generating a Build Number
  - diff, Viewing Your Staged and Unstaged Changes
    - check, Commit Guidelines
  - fast-import, A Custom Importer
  - fetch, Fetching and Pulling from Your Remotes
  - fetch-pack, Downloading Data
  - filter-branch, Git-p4
  - format-patch, Public Project over Email
  - gitk, gitk and git-gui
  - gui, gitk and git-gui
  - help, Getting Help, Setting Up the Server
  - http-backend, Smart HTTP
  - init, Initializing a Repository in an Existing Directory, Tracking New Files
    - bare, Putting the Bare Repository on a Server, Setting Up the Server
  - instaweb, GitWeb
  - log, Viewing the Commit History
  - merge, Basic Branching
    - squash, Forked Public Project
  - mergetool, Basic Merge Conflicts
  - p4, Git-p4, Git-p4
  - pull, Fetching and Pulling from Your Remotes
  - push, Pushing, Pushing to Your Remotes, Sharing Tags
  - rebase, The Basic Rebase
  - receive-pack, Uploading Data
  - remote, Adding Remote Repositories, Inspecting a Remote, Removing and Renaming Remotes, Showing Your Remotes
  - request-pull, Forked Public Project
  - rerere, Rerere
  - send-pack, Uploading Data
  - shortlog, The Shortlog
  - show, Lightweight Tags
  - show-ref, Getting Started
  - status, Checking the Status of Your Files, Committing Your Changes
  - svn, Git and Subversion
  - tag, Annotated Tags, Listing Your Tags, Tagging Later
  - upload-pack, Downloading Data
- git-svn, Git and Subversion
- git-tf, Which Tool
- git-tfs, Which Tool
- GitHub, GitHub
  - API, The GitHub API
  - Flow, The GitHub Flow
  - organizations, Managing an organization
  - pull requests, Creating a Pull Request
  - user accounts, Account Setup and Configuration
- GitHub for Mac, GitHub for Mac and Windows
- GitHub for Windows, GitHub for Mac and Windows
- gitk, gitk and git-gui
- GitLab, GitLab
- GitWeb, GitWeb
- GPG, user.signingkey
- Graphical tools, Graphical Interfaces
- GUIs, Graphical Interfaces

### H

- hooks, Git Hooks
  - post-update, Dumb HTTP

### I

- ignoring files, Ignoring Files
- Importing
  - from Mercurial, Mercurial
  - from others, A Custom Importer
  - from Perforce, Perforce
  - from Subversion, Subversion
  - from TFS, TFS
- integrating work, Integrating Contributed Work
- Interoperation with other VCSs
  - Mercurial, Git and Mercurial
  - Perforce, Git and Perforce
  - Subversion, Git and Subversion
  - TFS, Git and TFS
- IRC, Getting Help

### J

- java, JGit
- jgit, JGit

### K

- keyword expansion, Keyword Expansion

### L

- libgit2, Libgit2
- line endings, core.autocrlf
- Linus Torvalds, A Short History of Git
- Linux, A Short History of Git
  - installing, Installing on Linux
- log filtering, Limiting Log Output
- log formatting, Viewing the Commit History

### M

- Mac
  - installing, Installing on Mac
- maintaining a project, Maintaining a Project
- master, Branches in a Nutshell
- Mercurial, Git and Mercurial, Mercurial
- mergetool, External Merge and Diff Tools
- merging, Basic Merging
  - conflicts, Basic Merge Conflicts
  - strategies, Merge Strategies
  - vs. rebasing, Rebase vs. Merge
- Migrating to Git, Migrating to Git
- Mono, LibGit2Sharp

### O

- Objective-C, objective-git
- origin, Remote Branches

### P

- pager, core.pager
- Perforce, Centralized Version Control Systems, Git and Perforce, Git Basics, Perforce
  - Git Fusion, Git Fusion
- policy example, An Example Git-Enforced Policy
- posh-git, Git in Powershell
- powershell, Git in Powershell
- Powershell, Installing on Windows
- protocols
  - dumb HTTP, Dumb HTTP
  - git, The Git Protocol
  - local, Local Protocol
  - smart HTTP, Smart HTTP
  - SSH, The SSH Protocol
- pulling, Pulling
- pushing, Pushing
- Python, pygit2

### R

- rebasing, Rebasing
  - perils of, The Perils of Rebasing
  - vs. merging, Rebase vs. Merge
- references
  - remote, Remote Branches
- releasing, Preparing a Release
- rerere, Rerere
- Ruby, Libgit2

### S

- serving repositories, Git on the Server
  - git protocol, Git Daemon
  - GitLab, GitLab
  - GitWeb, GitWeb
  - HTTP, Smart HTTP
  - SSH, SSH Access
- SHA-1, Git Has Integrity
- shell prompts
  - bash, Git in Bash
  - powershell, Git in Powershell
  - zsh, Git in Zsh
- SSH keys, Generating Your SSH Public Key
  - with GitHub, SSH Access
- staging area
  - skipping, Skipping the Staging Area
- Subversion, Centralized Version Control Systems, Centralized Workflow, Git and Subversion, Git Basics, Subversion

### T

- tab completion
  - bash, Git in Bash
  - powershell, Git in Powershell
  - zsh, Git in Zsh
- tags, Tagging, Tagging Your Releases
  - annotated, Annotated Tags
  - lightweight, Lightweight Tags
  - signing, Tagging Your Releases
- TFS, Git and TFS, TFS
- TFVC, Git and TFS

### V

- version control, About Version Control
  - centralized, Centralized Version Control Systems
  - distributed, Distributed Version Control Systems
  - local, Local Version Control Systems
- Visual Studio, Git in Visual Studio

### W

- whitespace, Formatting and Whitespace
- Windows
  - installing, Installing on Windows
- workflows, Distributed Workflows
  - centralized, Centralized Workflow
  - dictator and lieutenants, Dictator and Lieutenants Workflow
  - integration manager, Integration-Manager Workflow
  - merging, Merging Workflows
  - merging (large), Large-Merging Workflows
  - rebasing and cherry-picking, Rebasing and Cherry Picking Workflows

### X

- Xcode, Installing on Mac

### Z

- zsh, Git in Zsh