Learn Git In Action
// Git sebagai content-addressed database: object model, hashing, blob/tree/commit/tag, reachability, dan cara membangun commit manual dari plumbing command.
This overview is designed to help you choose the right entry point quickly. Follow the full track from lesson one, continue from your last checkpoint, or jump straight into a phase that matches what you need right now.
Curriculum Map
Navigate by phase, then choose the lesson that matches your current depth.
Git as a Content-Addressed Database
13 minGit sebagai content-addressed database: object model, hashing, blob/tree/commit/tag, reachability, dan cara membangun commit manual dari plumbing command.
The Three Trees: Working Tree, Index, HEAD
13 minMental model tiga tree Git: Working Tree, Index, dan HEAD; bagaimana add, commit, reset, restore, checkout, dan status benar-benar bekerja.
Commit Graph, DAG, and Reachability
12 minCommit graph, DAG, reachability, ancestry, revision ranges, and how senior engineers reason about Git history as a graph instead of a timeline.
Refs: Branches, Tags, HEAD, and Symbolic References
13 minRefs, branches, tags, HEAD, symbolic references, remote-tracking branches, packed refs, and how Git names mutable positions in an immutable object graph.
Git Object Types: Blob, Tree, Commit, Tag
16 minDeep dive into Git object types: blob, tree, commit, and tag; how they encode snapshots, identity, filenames, modes, ancestry, and release names.
The Index as Conflict, Staging, and Performance Structure
13 minDeep dive into Git index as staging area, cache, conflict holder, tree construction boundary, and performance structure.
Porcelain vs Plumbing Commands
13 minMemahami Git command layer sebagai komposisi porcelain dan plumbing: command user-facing, primitive object/index/ref operation, scriptability, debugging, dan workflow automation.
Reading Git State Like an Engineer
13 minCara membaca state repository Git secara deterministic: working tree, index, HEAD, refs, upstream, conflict, object, graph, dan remote relation sebelum melakukan operasi berisiko.
Commit as a Change Unit
14 minCommit sebagai unit perubahan yang bisa dipahami, direview, diaudit, di-bisect, di-revert, dan dipakai sebagai bukti teknis dalam engineering workflow yang serius.
Atomic Commits and Reviewability
11 minAtomic commit bukan sekadar commit kecil, tetapi commit dengan batas intent yang benar sehingga mudah direview, diuji, di-revert, di-backport, dan dipakai sebagai unit reasoning.
Commit Message Design for Future Debugging
12 minCommit message bukan catatan kosmetik; ia adalah interface debugging masa depan, audit trail, review contract, dan decision log untuk engineer yang belum hadir hari ini.
Patch Shaping with add -p and commit -p
12 minPatch shaping adalah teknik membentuk staged diff secara surgical supaya satu working tree yang kacau bisa dipecah menjadi commit yang atomic, reviewable, dan aman di-revert.
Amend, Fixup, Autosquash
11 minAmend, fixup, squash, dan autosquash adalah teknik membentuk patch series lokal sebelum menjadi history publik yang stabil, reviewable, dan aman diintegrasikan.
range-diff for Reviewable Rewrites
10 mingit range-diff membandingkan dua versi patch series sehingga rewrite, rebase, amend, dan autosquash bisa direview tanpa kehilangan konteks perubahan antar versi.
Cherry-pick as Graph Surgery
14 minCherry-pick sebagai operasi graph surgery untuk memindahkan patch antar branch tanpa merge topology, termasuk backport, hotfix, conflict handling, duplicate patch, dan risiko release.
Revert as Public History Compensation
12 minRevert sebagai mekanisme kompensasi perubahan untuk shared/public history, termasuk revert commit biasa, revert merge commit, no-commit revert, revert-of-revert, dan release rollback strategy.
Branching as Pointer Management
12 minBranch sebagai pointer management, bukan folder copy; mencakup local branch, remote-tracking branch, upstream, refspec mental model, branch lifecycle, divergence, worktree, dan policy untuk team workflow.
Merge Base and Integration Math
11 minMerge-base sebagai matematika integrasi Git; mencakup best common ancestor, reachability, two-dot vs three-dot, fork-point, criss-cross merge, conflict reasoning, dan decision framework sebelum merge/rebase.
Fast-Forward, Non-Fast-Forward, and --no-ff
14 minFast-forward, non-fast-forward, --no-ff, --ff-only, dan cara memilih model integrasi yang benar untuk engineering workflow nyata.
Merge Strategy and Conflict Model
13 minMerge strategy, ort, recursive ancestry, three-way merge, conflict model, AUTO_MERGE, dan cara memahami conflict sebagai keputusan domain.
Conflict Resolution as Domain Decision
14 minConflict resolution sebagai keputusan domain, bukan sekadar menghapus marker sampai Git diam.
rerere: Reuse Recorded Resolution
11 minMenggunakan git rerere untuk mengingat resolusi conflict berulang tanpa mengorbankan correctness dan reviewability.
Rebase Mental Model
12 minMemahami rebase sebagai replay patch di atas base baru, lengkap dengan graph semantics, safety boundary, conflict behavior, dan workflow operasional.
Interactive Rebase for Series Engineering
10 minMenggunakan interactive rebase untuk membentuk patch series yang reviewable, bisectable, auditable, dan aman sebelum masuk shared history.
Rebase Merges and Topology Preservation
13 minMemahami rebase yang mempertahankan topology merge, kapan ia berguna, kapan berbahaya, dan bagaimana menggunakannya tanpa merusak konteks integrasi.
Merge vs Rebase Decision Framework
17 minFramework praktis untuk memilih merge atau rebase berdasarkan graph semantics, collaboration model, release risk, auditability, dan operational safety.
Reset, Restore, Checkout, Revert
13 minFramework operasional untuk memilih reset, restore, checkout, dan revert berdasarkan tree yang disentuh, apakah history sudah public, dan risiko kehilangan data.
Reflog as Local Time Machine
10 minReflog sebagai local time machine untuk memulihkan branch, commit yang hilang, bad reset, bad rebase, detached HEAD, dan force-push mistake.
fsck, Lost Found, and Dangling Objects
12 minDeep dive tentang git fsck, lost-found, dangling object, unreachable object, object recovery, dan repository integrity check untuk incident recovery.
Stash Internals and Safe Usage
11 minDeep dive tentang git stash internals, struktur commit stash, apply vs pop, conflict handling, partial stash, recovery, dan safe usage di workflow engineering.
Cleaning Working Tree Safely
10 minCleaning working tree safely tanpa kehilangan perubahan penting, dengan mental model tracked/untracked/ignored, dry-run discipline, dan playbook operasional.
Force Push Recovery and Team Protocol
10 minForce push recovery dan protokol tim untuk rewrite shared branch secara aman, termasuk force-with-lease, reflog, backup refs, dan incident handling.
Incident Playbook: Broken Main
16 minIncident playbook saat main/master rusak: freeze, triage, isolate, revert, verify, communicate, dan reopen dengan audit trail yang defensible.
Incident Playbook: Bad Release Tag
12 minIncident playbook saat release tag salah: klasifikasi dampak, immutable release policy, retagging risk, consumer impact, dan remediation yang aman.
Remotes, Refspecs, and Tracking Branches
15 minRemote repository, refspec, remote-tracking branch, upstream branch, fetch/push mapping, pruning, deletion, dan workflow multi-remote yang aman.
Fetch Negotiation and Object Transfer
16 minApa yang terjadi saat Git fetch: ref advertisement, negotiation, wants/haves, packfile transfer, shallow/partial clone, tags, FETCH_HEAD, dan failure mode CI.
Pull is Fetch plus Integrate
13 minGit pull bukan command ajaib. Pull adalah fetch plus integration: merge, rebase, squash, atau fast-forward-only tergantung policy dan konfigurasi.
Push Semantics and Non-Fast-Forward Rejection
12 minGit push sebagai operasi update remote refs: refspec, fast-forward rule, non-fast-forward rejection, force-with-lease, delete, tags, hooks, dan recovery workflow.
Forks, Upstreams, and Contribution Flow
12 minFork topology, upstream synchronization, PR branch hygiene, contribution safety, and operational guardrails for working across forks.
Multi-Remote Enterprise Workflows
13 minMulti-remote Git workflows for enterprise mirrors, vendor upstreams, customer-specific branches, regulated delivery, migration, and air-gapped synchronization.
Submodules in Production
15 minProduction-grade use of Git submodules: gitlink semantics, .gitmodules, detached HEAD, recursive clone, update strategies, CI, release pinning, security, and operational failure modes.
Subtree vs Submodule vs Monorepo
15 minDecision framework for subtree, submodule, and monorepo strategies: dependency ownership, history, tooling, release coupling, CI, review, and migration trade-offs.
Pull Request as Integration Contract
17 minPull request sebagai integration contract: kontrak perubahan dari branch kerja menuju protected line, termasuk diff semantics, checks, review, merge policy, dan failure mode organisasi.
Reviewable Branch Design
11 minMendesain branch yang reviewable: scope, commit series, dependency chain, branch lifetime, naming, update policy, dan failure mode agar PR kecil, jelas, dan aman diintegrasikan.
Stacked Branches and Dependent Changes
15 minStacked branches dan dependent changes sebagai teknik memecah perubahan besar menjadi rangkaian PR kecil yang tetap bisa direview, diuji, dan diintegrasikan tanpa kehilangan konteks.
Code Review Diff Mechanics
14 minCode review diff mechanics: memahami two-dot, three-dot, merge-base, patch generation, rename detection, whitespace, merge commits, dan failure mode diff review.
Protected Branches and Merge Queues
15 minProtected branches dan merge queues sebagai kontrol integrasi: required checks, required reviews, stale branch handling, queue semantics, dan race avoidance.
Linear History Policy vs Merge Commit Policy
15 minDecision framework linear history policy vs merge commit policy: auditability, bisectability, revertability, topology preservation, squash, rebase merge, dan first-parent history.
Ownership, CODEOWNERS, and Review Routing
12 minOwnership, CODEOWNERS, review routing, escalation, ownership decay, dan desain review topology untuk repository skala tim maupun enterprise.
Human Factors of Git Workflow
10 minHuman factors dalam Git workflow: safe defaults, cognitive load, aliases, guardrails, documentation, onboarding, dan desain sistem yang mengurangi kesalahan manusia.
Release Branching Models
14 minRelease branching models dalam Git: trunk-based, release train, maintenance branch, hotfix branch, GitFlow-like, support branch, dan decision framework untuk release yang auditable.
Version Tags and Release Identity
11 minVersion tags dan release identity dalam Git: lightweight vs annotated tags, signed tags, protected tags, immutable release policy, SemVer naming, provenance, dan artifact traceability.
Hotfix, Backport, and Forward-Port
11 minHotfix, backport, dan forward-port dalam Git: memilih patch, menjaga konsistensi lintas maintenance branch, menghindari duplicate fixes, dan membangun audit trail release.
Cherry-pick Trains for Maintenance Branches
8 minCherry-pick trains untuk maintenance branches: memilih patch series, mengurutkan dependency, mengelola conflict berulang, menjaga audit trail, dan memverifikasi release-line coverage.
Release Candidate Flow
10 minRelease Candidate Flow sebagai mekanisme stabilisasi release berbasis commit identity, protected branch, tag immutable, test gates, dan audit evidence.
Revert Strategy in Release Management
11 minRevert Strategy dalam release management: kapan revert-first, kapan fix-forward, cara revert merge commit, dan bagaimana menjaga auditability production release.
SemVer and Git History Boundaries
12 minSemVer dan Git history boundaries: bagaimana version number, tag, commit range, release branch, dan artifact identity harus disusun agar release bisa dipahami, diaudit, dan dipulihkan.
Build Reproducibility and Commit Pinning
9 minBuild reproducibility dan commit pinning: cara memastikan artifact, source commit, tag, dependency, build environment, dan runtime metadata membentuk rantai identitas yang bisa diverifikasi.
Inside .git Directory
11 minAnatomi direktori .git sebagai control plane dan database lokal Git: object store, refs, index, reflog, hooks, state files, worktree layout, dan cara inspeksi aman saat debugging.
Loose Objects and Object Storage
11 minLoose objects dan object storage Git: format object, header, zlib compression, path berdasarkan object ID, hash-object, cat-file, tree/commit plumbing, corruption model, dan debugging object database.
Packfiles, Indexes, and Delta Compression
15 minPackfiles, index files, delta compression, and the storage/performance mechanics behind Git object transfer and repository compaction.
Commit-Graph File and Generation Numbers
13 minCommit-graph files, generation numbers, changed-path Bloom filters, and how Git accelerates ancestry and history queries in large repositories.
Multi-Pack Index and Reachability Bitmaps
14 minMulti-pack-index, reachability bitmaps, reverse indexes, cruft packs, and how Git accelerates object lookup and reachability queries in large repositories.
Reftable, Packed Refs, and Ref Storage
14 minRef storage internals: loose refs, packed-refs, symbolic refs, reftable, transactional updates, reflogs, and ref scalability in large repositories.
Revisions and Revset Language
13 minMenguasai revision syntax dan revset Git sebagai bahasa untuk memilih object, commit set, ancestry, range, dan boundary perubahan secara presisi.
Pathspecs and Ignore Matching
13 minMenguasai pathspec, ignore matching, exclude rules, tracked vs untracked behavior, dan teknik membatasi operasi Git ke path yang tepat tanpa merusak repository.
Attributes, Filters, and Normalization
18 minMenguasai .gitattributes, text normalization, EOL policy, filters, diff drivers, merge drivers, archive attributes, dan failure mode konfigurasi file-level Git.
Hooks Architecture and Policy Boundaries
20 minMenguasai arsitektur Git hooks, lifecycle client/server hooks, policy boundary, bypass risk, safe hook design, server enforcement, dan automation guardrails.