# progit/progit2

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/progit-progit2).**

6,522 stars · 2,106 forks · CSS · NOASSERTION

## Links

- GitHub: https://github.com/progit/progit2
- awesome-repositories: https://awesome-repositories.com/repository/progit-progit2.md

## Description

This project is a comprehensive educational resource and guide for learning the Git version control system. It serves as a technical documentation source for a textbook that explains the fundamentals, advanced workflows, and internal architecture of Git.

The project is structured as a multi-format e-book, with source files designed to be compiled into various digital publication formats, including HTML, PDF, EPUB, and Mobi. It utilizes a dedicated build pipeline to generate and validate these documents.

The content covers a broad range of version control capabilities, including history manipulation, repository administration, and system integration. It provides guided instructions on workflow management—such as branching, merging, and rebasing—and analyzes the internal mechanics of the content-addressable filesystem and snapshot-based versioning.

## Tags

### Education & Learning Resources

- [Git Versioning Learning](https://awesome-repositories.com/f/education-learning-resources/technical-domain-education/gamified-learning/git-versioning-learning.md) — Provides a comprehensive educational resource for learning Git fundamentals, from setup to collaboration.
- [Version Control Learning](https://awesome-repositories.com/f/education-learning-resources/technical-domain-education/version-control-learning.md) — Provides comprehensive educational content and tutorials focused on the fundamental concepts and workflows of Git. ([source](https://github.com/progit/progit2#readme))

### Part of an Awesome List

- [Git Tutorials and Guides](https://awesome-repositories.com/f/awesome-lists/devtools/git-tutorials-and-guides.md) — Serves as a comprehensive educational guide and tutorial for mastering the Git version control system.
- [Version Control](https://awesome-repositories.com/f/awesome-lists/devtools/version-control.md) — Comprehensive guide and reference for version control.

### Data & Databases

- [Version Control Snapshots](https://awesome-repositories.com/f/data-databases/data-snapshotting/state-snapshots/version-control-snapshots.md) — Details the system of recording full project states as immutable snapshots instead of file diffs.
- [Content-Addressable Stores](https://awesome-repositories.com/f/data-databases/storage-abstraction/content-addressable-stores.md) — Explains the internal architecture of storing data as objects indexed by content hashes.

### Development Tools & Productivity

- [Branch Management](https://awesome-repositories.com/f/development-tools-productivity/branch-management.md) — Offers comprehensive guidance on creating, renaming, and deleting branches to manage parallel development. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [Branch Pointers](https://awesome-repositories.com/f/development-tools-productivity/branch-management/lightweight-bookmark-pointers/branch-pointers.md) — Explains the lightweight pointer mechanism used to manage parallel lines of development.
- [Branch Merging Strategies](https://awesome-repositories.com/f/development-tools-productivity/branch-merging-strategies.md) — Combine changes from different branches into a single line of development to integrate completed work. ([source](https://github.com/progit/progit2/blob/main/ch03-git-branching.asc))
- [Branching Strategies](https://awesome-repositories.com/f/development-tools-productivity/branching-strategies.md) — Provides detailed guidance on creating isolated development lines to work without affecting the primary codebase. ([source](https://github.com/progit/progit2/blob/main/ch03-git-branching.asc))
- [Change Tracking](https://awesome-repositories.com/f/development-tools-productivity/change-tracking.md) — Teaches how to identify and track project changes across history using snapshots and commits. ([source](https://github.com/progit/progit2/blob/main/ch02-git-basics-chapter.asc))
- [Working Directory Inspections](https://awesome-repositories.com/f/development-tools-productivity/commit-history-analysis/commit-history-integration/working-directory-inspections.md) — Provides methods to inspect modified, staged, and unstaged files in the working directory. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [Tracked File Removals](https://awesome-repositories.com/f/development-tools-productivity/file-tracking-management/tracked-file-removals.md) — Provides instructions on deleting files from both the staging area and the working directory. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [Git Branching & Merging](https://awesome-repositories.com/f/development-tools-productivity/git-branching-merging.md) — Teaches how to integrate changes from multiple branches into the current checked-out branch. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [Remote Change Integration](https://awesome-repositories.com/f/development-tools-productivity/local-file-syncing/remote-change-integration.md) — Explains the process of fetching remote updates and merging them into the local branch. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [Git Push Operations](https://awesome-repositories.com/f/development-tools-productivity/local-file-syncing/remote-repository-syncing/git-push-operations.md) — Covers the operation of uploading local commit history to a remote repository. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [History Manipulation](https://awesome-repositories.com/f/development-tools-productivity/project-history-navigation/history-manipulation.md) — Teaches advanced methods for rewriting commit history and recovering lost data.
- [Project History Viewers](https://awesome-repositories.com/f/development-tools-productivity/project-history-viewers.md) — Provides utilities for browsing and analyzing the chronological evolution of a codebase. ([source](https://github.com/progit/progit2/blob/main/ch02-git-basics-chapter.asc))
- [Remote Repository Operations](https://awesome-repositories.com/f/development-tools-productivity/remote-repository-managers/remote-repository-operations.md) — Covers standard remote operations including cloning, fetching, pulling, and pushing to collaborate across environments. ([source](https://github.com/progit/progit2/blob/main/ch02-git-basics-chapter.asc))
- [Git Collaboration Workflows](https://awesome-repositories.com/f/development-tools-productivity/team-collaboration-tools/git-collaboration-workflows.md) — Provides detailed instruction on branching strategies and conflict resolution for structured software development.
- [Version Control Guides](https://awesome-repositories.com/f/development-tools-productivity/version-control-guides.md) — Functions as a complete educational book teaching Git's fundamentals, advanced workflows, and architecture.
- [Repository Initialization](https://awesome-repositories.com/f/development-tools-productivity/version-control-repository-tools/repository-initialization.md) — Guides users through the process of creating new version-controlled projects via repository initialization. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [Release Tagging](https://awesome-repositories.com/f/development-tools-productivity/branch-management/bookmark-based-commit-labeling/release-tagging.md) — Explains how to assign permanent labels to specific commits, typically for software releases. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [Version Control Undo Operations](https://awesome-repositories.com/f/development-tools-productivity/change-tracking/undo-trees/operation-based-undo-history/version-control-undo-operations.md) — Describes commands to revert uncommitted or committed modifications to restore the repository to a previous state. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [Collaborative Projects](https://awesome-repositories.com/f/development-tools-productivity/collaborative-projects.md) — Guides the process of maintaining a collaborative codebase by integrating contributions from multiple developers. ([source](https://github.com/progit/progit2/blob/main/ch05-distributed-git.asc))
- [Code History Searching](https://awesome-repositories.com/f/development-tools-productivity/commit-history-analysis/code-history-searching.md) — Teaches how to search through version history to find when specific strings or patterns were introduced or removed. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [Regression Tracking](https://awesome-repositories.com/f/development-tools-productivity/commit-history-analysis/commit-history-integration/regression-tracking.md) — Teaches how to trace project history to determine exactly which commit introduced a regression. ([source](https://github.com/progit/progit2/blob/main/ch07-git-tools.asc))
- [Commit History Traversal](https://awesome-repositories.com/f/development-tools-productivity/commit-history-traversal.md) — Explains how to navigate and display the recorded history of a project using various filtering and visualization options. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [Regression Range Identifiers](https://awesome-repositories.com/f/development-tools-productivity/commit-identifiers/commit-range-filtering/regression-range-identifiers.md) — Teaches how to use binary search to identify the specific commit that introduced a regression.
- [Cherry-Picking](https://awesome-repositories.com/f/development-tools-productivity/commit-management/commit-integrators/cherry-picking.md) — Provides instructions on how to copy a specific commit from one branch and apply it to another. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [VCS Utility Tooling](https://awesome-repositories.com/f/development-tools-productivity/custom-build-workflows/vcs-utility-tooling.md) — Shows how to build specialized tools and scripts using low-level commands to extend standard functionality. ([source](https://github.com/progit/progit2/blob/main/ch10-git-internals.asc))
- [Event Automation Hooks](https://awesome-repositories.com/f/development-tools-productivity/event-automation-hooks.md) — Teaches the use of event hooks to trigger custom scripts during the development workflow. ([source](https://github.com/progit/progit2/blob/main/ch08-customizing-git.asc))
- [External Repository Integrations](https://awesome-repositories.com/f/development-tools-productivity/external-repository-integrations.md) — Explains methods for incorporating external repositories into a project via submodules or subtree merges. ([source](https://github.com/progit/progit2/blob/main/ch07-git-tools.asc))
- [File Difference Renderers](https://awesome-repositories.com/f/development-tools-productivity/file-difference-renderers.md) — Explains how to display differences between the working directory, staging area, and specific commits. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [History Linearization](https://awesome-repositories.com/f/development-tools-productivity/git-branching-merging/history-linearization.md) — Provides guidance on rewriting commit history to maintain a clean, linear timeline. ([source](https://github.com/progit/progit2/blob/main/ch03-git-branching.asc))
- [Git Object Inspection](https://awesome-repositories.com/f/development-tools-productivity/git-object-inspection.md) — Teaches how to display human-readable information about Git tags, commits, and file stages. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [Platform Workflow Automation](https://awesome-repositories.com/f/development-tools-productivity/platform-workflow-automation.md) — Explains how to automate repetitive administrative and development tasks through programmatic interfaces. ([source](https://github.com/progit/progit2/blob/main/ch06-github.asc))
- [Programmatic Repository Access Libraries](https://awesome-repositories.com/f/development-tools-productivity/programmatic-codebase-ingestion-libraries/git-repository-ingestion-libraries/programmatic-repository-access-libraries.md) — Provides guidance on programmatically interacting with repositories to automate developer workflows. ([source](https://github.com/progit/progit2/blob/main/A-git-in-other-environments.asc))
- [User Preference Configurations](https://awesome-repositories.com/f/development-tools-productivity/project-configuration/toml-configuration-support/user-preference-configurations.md) — Teaches how to set user preferences, aliases, and default behaviors for the tool. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [Remote Commit Fetching](https://awesome-repositories.com/f/development-tools-productivity/remote-commit-fetching.md) — Describes the process of downloading commits and metadata from a remote repository into the local database. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [Remote Repository Cloning](https://awesome-repositories.com/f/development-tools-productivity/remote-repository-managers/remote-repository-cloning.md) — Teaches how to copy a remote repository, including its full history and submodules, to a local machine. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [Organization Workspace Management](https://awesome-repositories.com/f/development-tools-productivity/team-management/team-scoped-access-control/organization-workspace-management.md) — Covers the administration of users, roles, and repositories within a managed organization workspace. ([source](https://github.com/progit/progit2/blob/main/ch06-github.asc))
- [Tool Behavior Configurations](https://awesome-repositories.com/f/development-tools-productivity/tool-behavior-configurations.md) — Guides users on adjusting global and local configurations to change tool behavior. ([source](https://github.com/progit/progit2/blob/main/ch08-customizing-git.asc))
- [Version Control Integrations](https://awesome-repositories.com/f/development-tools-productivity/version-control-integrations.md) — Guides users on embedding version control functionality into other applications using libraries or CLI. ([source](https://github.com/progit/progit2/blob/main/B-embedding-git-in-your-applications.asc))
- [Commit History Restructuring Operations](https://awesome-repositories.com/f/development-tools-productivity/version-control-repository-tools/version-control-managers/git-utilities/commit-cherry-picking-tools/commit-history-refinement/commit-history-restructuring-operations.md) — Details how to move a series of commits onto a new base commit to reorganize history. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [Submodule Management Tools](https://awesome-repositories.com/f/development-tools-productivity/version-control-repository-tools/version-control-managers/repository-utilities/repository-configuration-utilities/submodule-management-tools.md) — Provides instructions for integrating and tracking external project versions as submodules. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [Untracked File Cleanup](https://awesome-repositories.com/f/development-tools-productivity/version-control-repository-tools/version-control-managers/repository-utilities/working-directory-controllers/untracked-file-cleanup.md) — Provides instructions on removing untracked or unwanted files from the local working directory. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [Historical Code Attribution](https://awesome-repositories.com/f/development-tools-productivity/version-control-systems/historical-code-attribution.md) — Describes how to use version control metadata to show which author last modified each line of a file. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [Work Stashing](https://awesome-repositories.com/f/development-tools-productivity/work-stashing.md) — Provides guidance on temporarily storing uncommitted changes to clear the working directory. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))

### DevOps & Infrastructure

- [Remote Repository Hosting](https://awesome-repositories.com/f/devops-infrastructure/remote-repository-hosting.md) — Provides instructions on creating central synchronization points using bare repositories for team collaboration. ([source](https://github.com/progit/progit2/blob/main/ch04-git-on-the-server.asc))
- [Local-Remote Branch Synchronizers](https://awesome-repositories.com/f/devops-infrastructure/version-control-management/version-control-utilities/branch-management-utilities/local-remote-branch-synchronizers.md) — Covers the process of aligning local version control branches with their remote counterparts for collaboration. ([source](https://github.com/progit/progit2/blob/main/ch03-git-branching.asc))
- [Staging Areas](https://awesome-repositories.com/f/devops-infrastructure/version-control-management/version-control/staging-areas.md) — Describes the use of a staging area index to refine changes before they are committed.
- [Commit History Management](https://awesome-repositories.com/f/devops-infrastructure/version-control-management/version-control-utilities/commit-history-management.md) — Explains techniques for cleaning, squashing, and reorganizing commit history to maintain a professional project timeline. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [Commit Reverts](https://awesome-repositories.com/f/devops-infrastructure/version-control-management/version-control-utilities/commit-history-management/initial-commit-resets/targeted-commit-resets/commit-reverts.md) — Provides instructions on how to create a new commit that applies the exact opposite of a target commit. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [Git Hosting Services](https://awesome-repositories.com/f/devops-infrastructure/version-control-management/version-control/git-hosting-services.md) — Explains how to host and manage repositories in remote cloud environments for collaboration. ([source](https://github.com/progit/progit2/blob/main/ch06-github.asc))

### Programming Languages & Runtimes

- [Directed Acyclic Graphs](https://awesome-repositories.com/f/programming-languages-runtimes/programming-utilities/data-structure-type-helpers/data-structures/directed-acyclic-graphs.md) — Describes how commit history is modeled as a directed acyclic graph of snapshots.

### Repository Format

- [Branch Switching](https://awesome-repositories.com/f/repository-format/branch-switching.md) — Provides detailed instructions on changing the active development branch and updating the working tree. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [Internal Architecture Analysis](https://awesome-repositories.com/f/repository-format/content-addressed-versioning-systems/internal-architecture-analysis.md) — Provides a deep dive into the internal mechanics of Git's content-addressable filesystem and object storage. ([source](https://github.com/progit/progit2/blob/main/ch10-git-internals.asc))
- [Remote Connection Management](https://awesome-repositories.com/f/repository-format/remote-connection-management.md) — Explains how to add, remove, and rename shortcuts for remote repository URLs. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [VCS File Attribute Specifications](https://awesome-repositories.com/f/repository-format/vcs-file-attribute-specifications.md) — Explains how to define file attributes to specify how the system handles different file extensions. ([source](https://github.com/progit/progit2/blob/main/ch08-customizing-git.asc))

### Software Engineering & Architecture

- [Snapshot Committing](https://awesome-repositories.com/f/software-engineering-architecture/project-management-governance/repository-maintenance/repository-metadata/commit-histories/snapshot-committing-utilities/snapshot-committing.md) — Explains how to save staged changes as permanent snapshots in the repository history. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [Bug Introduction Range Identifiers](https://awesome-repositories.com/f/software-engineering-architecture/bug-pattern-mining/bug-introduction-range-identifiers.md) — Explains how to use binary search to identify the specific commit that introduced a regression. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [Patch Application](https://awesome-repositories.com/f/software-engineering-architecture/code-patching-engines/patch-generators/patch-application.md) — Explains the process of integrating changes from external diff or patch files into a working directory. ([source](https://github.com/progit/progit2/blob/main/C-git-commands.asc))
- [Contribution Workflows](https://awesome-repositories.com/f/software-engineering-architecture/contribution-workflows.md) — Describes standardized processes and workflows for managing external contributions to a shared project. ([source](https://github.com/progit/progit2/blob/main/ch05-distributed-git.asc))
- [Contribution Education](https://awesome-repositories.com/f/software-engineering-architecture/project-management-governance/project-governance/contribution-guidelines/contribution-guides/contribution-education.md) — Provides educational resources on the processes for submitting and reviewing contributions to projects. ([source](https://github.com/progit/progit2/blob/main/ch06-github.asc))

### Content Management & Publishing

- [Document Build Pipelines](https://awesome-repositories.com/f/content-management-publishing/document-build-pipelines.md) — Implements a build pipeline that transforms raw documentation source files into multiple published digital formats.
- [Multi-Format Book Builders](https://awesome-repositories.com/f/content-management-publishing/media-management/media-automation-tools/document-generation/educational-book-generators/multi-format-book-builders.md) — Uses a toolchain to generate HTML, PDF, and EPUB versions of a textbook from source files. ([source](https://github.com/progit/progit2/blob/main/Gemfile))

### Security & Cryptography

- [Server-Enforced Access Policies](https://awesome-repositories.com/f/security-cryptography/server-enforced-access-policies.md) — Teaches how to implement server-side rules to validate or restrict pushes based on organizational policies. ([source](https://github.com/progit/progit2/blob/main/ch08-customizing-git.asc))
- [Git User Identities](https://awesome-repositories.com/f/security-cryptography/user-identity-management/git-user-identities.md) — Explains how to configure global identification details for attributing commits to specific authors. ([source](https://github.com/progit/progit2/blob/main/ch01-getting-started.asc))

### System Administration & Monitoring

- [Git Server Administration](https://awesome-repositories.com/f/system-administration-monitoring/git-server-administration.md) — Covers the administrative management of Git hosting environments, including user access and server-side policies.
