Git Learning
A specification-driven Git learning path built around Git’s documented repository model and real command verification.
- Learning resources
- 74
- Beginner
- 11
- Advanced
- 39
- Total time
- 2595 min
Start here
Git Foundations: Working Tree, Index, and Commits
Begin with the recommended resource, then continue through the learning stages in order.
Explore learning
All learning resources
Search, filter, and sort the complete learning collection for this technology.
74 resources
-
LearninggitBeginner
Git Foundations: Working Tree, Index, and Commits
Build the core Git mental model by creating a repository and observing the real state transitions from working tree to index to commit and history.
~18 min read Open learning -
LearninggitBeginner
Git Repository Creation and Cloning
Create repositories in the intended directory, understand an empty versus bare repository, and verify the state produced by cloning an existing repository.
~20 min read Open learning -
LearninggitBeginner
Git Version, Help, and Configuration
Verify Git, use Git’s built-in help, and configure repository-local identity without changing global settings.
~15 min read Open learning -
LearninggitBeginner
Git Removing and Moving Tracked Files
Remove tracked paths, remove paths from the index without deleting the working-tree file, and move or rename tracked paths while understanding exactly what changes before a commit.
~20 min read Open learning -
LearninggitBeginner
Git Ignore Files and Check Ignore
Define ignore patterns for intentionally untracked paths and diagnose ignore decisions precisely with git check-ignore.
~22 min read Open learning -
LearninggitBeginner
Git Diff: Comparing Repository States
Use git diff to inspect differences between the working tree, index, and committed snapshots without confusing observation with mutation.
~25 min read Open learning -
LearninggitBeginner
Git Show: Reading Committed Snapshots
Use git show to inspect committed objects, commit metadata, and the changes introduced by a commit without confusing object inspection with state comparison.
~25 min read Open learning -
LearninggitIntermediate
Git Archive
Create Git release archives from repository snapshots and control exported paths and metadata with official archive mechanisms.
~45 min read Open learning -
LearninggitAdvanced
Git Bisect: Binary Search Through History
Learn how to use git bisect to find the first commit that changed a tested property, control manual bisection, automate tests, skip untestable revisions, replay decisions, and clean up safely.
~40 min read Open learning -
LearninggitAdvanced
Git Blame: Trace Line-Level Provenance
Trace current file lines to revisions and authors, follow moved or copied lines, control history traversal, ignore mechanical revisions, and use machine-readable attribution output.
~35 min read Open learning -
LearninggitIntermediate
Git Branch Management: List, Create, Rename, Copy, Move, and Delete Branches
Manage local branch references deliberately: inspect branch tips, create and move names, rename or copy refs, and delete branches with Git's safety checks.
~45 min read Open learning -
LearninggitAdvanced
Git Bundle: Move Git History Offline
Create, inspect, verify, and consume Git bundle files for offline transfer, full backups, and incremental history exchange.
~50 min read Open learning -
LearninggitAdvanced
Git cat-file: Inspect Repository Objects Precisely
Inspect Git objects by type, size, existence, and content, then use cat-file batch modes for efficient scripted object inspection.
~30 min read Open learning -
LearninggitAdvanced
Git Cherry-Pick: Applying Selected Commits to Another History
Apply selected existing commits to the current branch, understand new commit identities, control in-progress cherry-picks, and verify selective history transformations.
~40 min read Open learning -
LearninggitAdvanced
Git Clean: Safely Remove Untracked Working-Tree Content
Preview and safely remove untracked working-tree files and directories, with precise control over ignored content and path scope.
~30 min read Open learning -
LearninggitAdvanced
Git Commit-Graph: Accelerating Commit History Walks
Understand Git’s supplemental commit-graph data structure, verification, reachable graph writing, changed-path Bloom filters, and split commit-graph chains.
~30 min read Open learning -
LearninggitAdvanced
Git Describe: Ref-Based Human-Readable Names
Use git describe to derive human-readable names for commits from tags or other refs, with precise candidate and dirty-working-tree controls.
~30 min read Open learning -
LearninggitIntermediate
Git Detached HEAD: Inspecting Commits Without Moving a Branch
Understand detached HEAD as a direct commit reference, inspect its state precisely, observe detached commits without moving a named branch, and reattach safely to a branch.
~35 min read Open learning -
LearninggitIntermediate
Git Fast-Forward vs True Merge: Commit-Graph Outcomes
Use real Git to distinguish fast-forward updates, true merge commits, --no-ff, and --ff-only by observing branch tips, object IDs, and parent relationships.
~35 min read Open learning -
LearninggitAdvanced
Git Grep: Repository-Aware Search
Search tracked content, index entries, committed trees, and selected untracked files with Git-aware patterns and pathspecs.
~35 min read Open learning -
LearninggitIntermediate
Git HEAD: The Current Branch and Symbolic References
Understand HEAD as the per-worktree symbolic reference to the current branch, distinguish it from a branch tip, observe attached HEAD, and recognize the unborn-branch boundary before detached HEAD.
~35 min read Open learning -
LearninggitAdvanced
Git index-pack: Build and Verify Pack Indexes
Understand how git index-pack builds pack indexes for existing Git packfiles, handles standard input, reverse indexes, strict validation, and keep files without confusing index construction with object repacking.
~30 min read Open learning -
LearninggitAdvanced
Git Interactive Rebase: Editing and Reshaping Commit History
Use interactive rebase to inspect and edit the replay sequence: reorder, combine, reword, edit, drop, and autosquash commits, then verify the rewritten history.
~45 min read Open learning -
LearninggitAdvanced
Git ls-tree: Inspect Tree Objects
Inspect the contents of Git tree objects, recurse through subtrees, select paths, control output, and distinguish tree inspection from tree construction and index operations.
~30 min read Open learning -
LearninggitAdvanced
Git Mailbox Patch Series: Apply with git am
Apply mailbox-formatted patch series as commits with git am, preserve patch authorship, and recover safely from failures.
~60 min read Open learning -
LearninggitIntermediate
Git Merge Conflict Resolution: From Unmerged Paths to a Resolved Index
Resolve real Git merge conflicts by choosing intended content, staging each resolved path, inspecting the index, and proving the distinction between resolution and merge completion.
~40 min read Open learning -
LearninggitIntermediate
Git Merge Conflicts: Detecting and Inspecting the Unresolved State
Use real Git to detect and inspect an unresolved merge: non-zero merge status, unmerged paths, index stages, conflict markers, HEAD, and MERGE_HEAD.
~35 min read Open learning -
LearninggitIntermediate
Git Merge Continue and Abort: Completing or Abandoning an In-Progress Merge
Finish a resolved merge with git merge --continue or abandon a conflicted merge with git merge --abort, while verifying the exact history and repository-state transition.
~35 min read Open learning -
Learninggit
Git Merge vs Rebase vs Cherry-Pick: Comparing History Transformations
Compare merge, rebase, and cherry-pick by the repository state each operation transforms, the commits it selects, and the resulting history shape.
~35 min read Open learning -
LearninggitAdvanced
Git mktag: Construct Tag Objects with Validation
Construct annotated-tag objects from their canonical contents, understand the validation performed by git mktag, and distinguish tag objects from tag references.
~25 min read Open learning -
LearninggitAdvanced
Git mktree: Build Tree Objects from ls-tree Data
Build Git tree objects from ls-tree-formatted input, verify the referenced objects, and understand the boundary between reading and constructing tree objects.
~25 min read Open learning -
LearninggitAdvanced
Git Multi-Pack Index: Indexing Multiple Packfiles
Understand why Git uses a multi-pack index and safely create, verify, expire, and repack it in a disposable repository.
~25 min read Open learning -
LearninggitIntermediate
Git Multiple Worktrees
Use one Git repository through multiple local working trees, including new-branch, existing-branch, and detached worktrees.
~45 min read Open learning -
LearninggitAdvanced
Git name-rev: Find Symbolic Names for Commits
Use git name-rev to assign human-readable symbolic names to revisions, restrict naming candidates, annotate commit IDs in text, and distinguish naming from revision selection and ref modification.
~25 min read Open learning -
LearninggitIntermediate
Git Non-Fast-Forward Rejection: Safe Integration Before Publishing
Understand why ordinary pushes are rejected when remote history has diverged, and verify safe fetch, merge, rebase, and force-with-lease boundaries before publishing again.
~45 min read Open learning -
LearninggitAdvanced
Git Notes: Attach Metadata to Git Objects
Use Git notes to annotate objects without changing the annotated object, including writing, reading, copying, removing, custom refs, merging, and pruning.
~45 min read Open learning -
LearninggitAdvanced
Git Object Storage: Count, Repack, and Verify Packfiles
Inspect loose objects and packfiles with git count-objects, reorganize storage with git repack in a disposable repository, and verify a pack with git verify-pack.
~25 min read Open learning -
LearninggitAdvanced
Git pack-objects: Construct Pack Archives
Construct Git pack archives from object lists and revisions, control object selection and delta compression, and understand the boundary between low-level pack construction and repository repacking.
~35 min read Open learning -
LearninggitAdvanced
Git pack-refs: Pack References for Efficient Storage
Understand packed refs, loose refs, selection patterns, pruning behavior, and automatic ref packing without confusing ref storage with object packing.
~25 min read Open learning -
LearninggitAdvanced
Git Patch Workflows: Format and Apply Patch Text
Generate reviewable patch series with git format-patch and safely inspect or apply unified diff patches with git apply.
~55 min read Open learning -
LearninggitAdvanced
Git prune-packed: Remove Loose Copies of Packed Objects
Learn how git prune-packed removes redundant loose object files when the same objects already exist in pack files.
~20 min read Open learning -
LearninggitAdvanced
Git prune: Remove Unreachable Objects Safely
Understand Git's low-level object-pruning command, preview unreachable objects, control expiration, protect objects with additional heads, and distinguish pruning from integrity checking and general maintenance.
~25 min read Open learning -
LearninggitIntermediate
Git Pull: Fetching and Integrating Remote History
Understand git pull as fetch followed by integration, including explicit sources, fast-forward updates, divergent histories, merge and rebase modes, and the boundary between fetching and publishing.
~40 min read Open learning -
LearninggitIntermediate
Git Push: Publishing Local Refs to a Remote Repository
Understand git push as publishing selected local refs and required objects to another repository, including refspecs, remote-tracking updates, dry runs, and fast-forward safety.
~40 min read Open learning -
LearninggitAdvanced
Git Range-Diff: Compare Commit Series
Compare two versions of a commit series and inspect which patches correspond, changed, appeared, or disappeared.
~35 min read Open learning -
LearninggitAdvanced
Git read-tree: Read and Merge Trees into the Index
Use git read-tree to populate, empty, and merge the Git index from tree objects while understanding index stages and working-tree boundaries.
~35 min read Open learning -
LearninggitAdvanced
Git Rebase: Running, Controlling, and Verifying History Rewrites
Use git rebase in controlled workflows: choose a base, transplant commits, handle the in-progress operation controls, and verify the resulting local history.
~40 min read Open learning -
LearninggitAdvanced
Git Rebase Model: Transplanting Commits onto a New Base
Understand Git rebase as a local history transformation that selects commits after an upstream boundary and reapplies them onto a new base, creating new commit identities.
~35 min read Open learning -
LearninggitIntermediate
Git References and Branch Tips: Commits Are Objects, Branches Are Names
Build the reference model behind Git branches: commit objects stay immutable while branch references move between commits.
~35 min read Open learning -
LearninggitAdvanced
Git Reflog: Reading the Local History of References
Learn how reflogs record local reference updates, how to inspect HEAD and branch reflogs, and how to use reflog-based revision names to identify earlier reference values.
~35 min read Open learning -
LearninggitIntermediate
Git Remote Management: Configuring and Inspecting Remotes
Manage local remote configuration with git remote: list, inspect, add, rename, remove, and change remote URLs without confusing configuration changes with fetch, push, or branch operations.
~35 min read Open learning -
LearninggitIntermediate
Git Remote Names and Remote-Tracking References
Understand remote names as local identifiers for other repositories, remote-tracking references under refs/remotes/, and how fetching updates those references without moving the current local branch.
~35 min read Open learning -
LearninggitAdvanced
Git Repository Integrity: Verify with git fsck
Verify Git object connectivity and validity with git fsck, distinguish reachable, dangling, and unreachable objects, and investigate integrity findings safely.
~50 min read Open learning -
LearninggitAdvanced
Git Repository Maintenance: gc and maintenance
Perform controlled Git repository housekeeping with git gc and the task-oriented git maintenance interface, while separating maintenance from integrity checking and storage inspection.
~30 min read Open learning -
LearninggitBeginner
Git Reset: Moving HEAD and Controlling Local State
Use git reset precisely by separating its path form from commit form and proving the effects of soft, mixed, and hard reset on HEAD, the index, and the working tree.
~35 min read Open learning -
LearninggitBeginner
Git Restore, Reset, and Revert: Choosing the Operation by State
Choose among git restore, git reset, and git revert by identifying which repository state must change: working tree, index, branch tip, or recorded history.
~35 min read Open learning -
LearninggitBeginner
Git Restore: Correcting Working Tree and Index State
Use git restore to deliberately change the working tree or index without rewriting commit history, and distinguish its restore locations and sources.
~30 min read Open learning -
LearninggitBeginner
Git Revert: Recording a History-Preserving Reversal
Use git revert to reverse earlier commits by creating new commits, and distinguish clean reverts, conflicts, in-progress revert control, and merge-commit mainlines.
~35 min read Open learning -
LearninggitAdvanced
Git Revision Selection and Ancestry Queries
Read advanced Git revision expressions, merge-parent selectors, object and message selectors, revision-set algebra, and ancestry-focused history queries without confusing ranges with diffs.
~50 min read Open learning -
LearninggitIntermediate
Git Safe Recovery Laboratories: ORIG_HEAD, Backup References, and Abortable Operations
Practice safe recovery from destructive local operations using explicit recovery anchors without prematurely introducing reflogs.
~40 min read Open learning -
LearninggitAdvanced
Git show-index: Inspect Pack Indexes
Inspect Git pack index entries directly with git show-index, understand its output and hash-format option, and distinguish index inspection from index creation and pack verification.
~25 min read Open learning -
LearninggitAdvanced
Git show-ref: Inspect Local References
Use git show-ref to list, filter, verify, and script against local Git references without confusing reference inspection with ref updates or revision parsing.
~30 min read Open learning -
LearninggitAdvanced
Git Sparse-Checkout: Work with a Selected Working-Tree Subset
Control which tracked paths are populated in a working tree with cone and non-cone sparse-checkout, including set, add, list, reapply, disable, stdin input, and sparse-index.
~45 min read Open learning -
LearninggitIntermediate
Git Stash Inspection, Application, and Recovery
Inspect, restore, remove, and branch-recover temporary Git stash state without confusing stash management with durable branch history.
~55 min read Open learning -
LearninggitIntermediate
Git Stashing
Temporarily save local working-tree and index state with precise control over tracked, untracked, ignored, staged, and path-limited changes.
~50 min read Open learning -
LearninggitIntermediate
Git Switch: Changing the Current Branch Safely
Switch named branches while understanding index and working-tree updates, local-change safety, transactional branch creation, previous-switch shorthand, and explicit discard/merge behavior.
~45 min read Open learning -
LearninggitIntermediate
Git Tag Inspection and Deletion
Inspect tags by name, target, ancestry, and annotation, then delete tag references deliberately without confusing reference deletion with object deletion.
~35 min read Open learning -
LearninggitIntermediate
Git Tag Verification
Verify cryptographically signed Git tags and interpret signature results without confusing cryptographic validity with authorization or provenance.
~40 min read Open learning -
LearninggitIntermediate
Git Tags: Lightweight and Annotated Tags
Learn the structural difference between lightweight and annotated tags, create each form deliberately, understand what a tag reference points at, and choose the form that matches the intended lifecycle.
~30 min read Open learning -
LearninggitAdvanced
Git unpack-objects: Expand Pack Archives into Loose Objects
Expand Git pack archives into loose objects while understanding dry runs, strict validation, recovery mode, and the boundary between object storage and refs.
~30 min read Open learning -
LearninggitIntermediate
Git Upstream and Tracking Configuration: Connecting Local Branches to Remote Branches
Understand upstream branch configuration, how tracking relationships are created and changed, and how they guide argument-less pull and push without changing history by themselves.
~35 min read Open learning -
LearninggitAdvanced
Git Worktree Lifecycle: Lock, Move, Repair, Prune, and Remove
Safely manage the lifecycle of linked Git worktrees: lock and unlock them, move them, repair manually moved worktrees, remove clean or forced worktrees, and prune stale administrative records.
~45 min read Open learning -
LearninggitAdvanced
Git write-tree: Turn the Index into Tree Objects
Convert a fully merged Git index into tree objects while understanding subtrees, object validation, and the index-to-object-database boundary.
~30 min read Open learning -
LearninggitAdvanced
Git: Recovering Abandoned Commits
Learn how to recover existing commits after local history movement by using reflogs first, git fsck as a fallback investigation tool, and a new reference to preserve the recovered object.
~40 min read Open learning