Field notes

Notes from the edge of the repo.

Long-form deep-dives on Git internals, recovery, and the commands you only learn after losing work twice. Each post deep-links into a scenario or lesson so the theory lands with a real terminal underneath.

  1. ·11 min read·git

    Git 2.55: the new features you will actually use

    Git 2.55 landed on 29 June 2026. Most of it is under-the-hood speed, but a handful of user-facing changes are worth learning today: git history fixup, a safer git checkout -m, fsmonitor on Linux, parallel hooks, and remote-group push. Verified against the official release notes.

    Read post
  2. ·12 min read·undo

    How to undo a Git commit (reset vs revert, and when to use each)

    How to undo a Git commit safely. Choose between git reset and git revert, keep or discard your changes, and learn the one rule that decides which to use once you have pushed.

    Read post
  3. ·12 min read·rebase

    How to undo a Git rebase (with ORIG_HEAD and reflog)

    Undo a Git rebase and recover the pre-rebase state. Use git reset --hard ORIG_HEAD for the fast undo, git reflog when it is gone, and git rebase --abort mid-conflict.

    Read post
  4. ·12 min read·stash

    How to undo a git stash pop (even with conflicts)

    git stash pop left conflict markers? Your stash is safe — a conflicted pop never drops it. Undo the pop cleanly, or resolve and keep, with exact commands.

    Read post
  5. ·12 min read·rebase

    git rebase --update-refs: rebase stacked branches in one shot

    Rebase a stack of branches at once with git rebase --update-refs. Keep every stacked PR branch pointer in sync, the config to make it default, and how to push safely after.

    Read post
  6. ·13 min read·merge-conflicts

    How to resolve merge conflicts in Git (without panicking)

    A merge conflict is not an error — it is Git asking you to decide. Learn the base/ours/theirs model, the conflict markers, and why ours and theirs swap between merge and rebase.

    Read post
  7. ·10 min read·git

    What I got wrong about Git for years

    Six things I believed about Git that were just wrong — commits as diffs, rebase as dangerous, branches as heavy. Fixing the mental model is what finally made Git click.

    Read post
  8. ·13 min read·amend

    How to amend the author of your last commit in Git

    Committed with the wrong git config — work email instead of personal, or your old name? Here are the exact commands to fix the author of one commit, of several commits, and to prevent it ever happening again.

    Read post
  9. ·14 min read·rebase

    Git rebase to reorder commits: a step-by-step guide

    Five commits ready to push, but in the wrong order for review? Here is exactly how git rebase -i reorders commits, what happens when reordering hits a conflict, and when you should and should not reorder.

    Read post
  10. ·13 min read·recovery

    How to recover a deleted Git branch (even after git branch -D)

    Deleted a Git branch by mistake? The commits live on for ~90 days. Here are the exact reflog and git fsck commands to bring a deleted branch back, with realistic walkthroughs.

    Read post
  11. ·11 min read·recovery

    git reflog: the undo button you didn't know you had

    Every commit you've ever made is recoverable for at least 30 days, even after a hard reset, a bad rebase, or a deleted branch. Here's how reflog works and the exact commands to bring lost work back.

    Read post
  12. ·15 min read·workflows

    Choosing a Git workflow: a decision guide for real teams

    Trunk-based, Gitflow, GitHub Flow, GitLab Flow, Release Flow — five workflows, three questions about your team, one matrix that tells you which to use. With evidence and real examples.

    Read post
  13. ·14 min read·gitflow

    Gitflow in 2026: still useful, or time to move on?

    Gitflow has a bad reputation online, but it still earns its weight for versioned SDKs, regulated industries, and long support windows. Here is when it is right, and when it is wrong.

    Read post
  14. ·15 min read·migration

    Migrating from Gitflow to trunk-based development: a step-by-step playbook

    A team that tried to migrate from Gitflow to trunk-based development overnight ground to a halt for three weeks. Here is a realistic five-phase playbook that takes 2 to 4 months.

    Read post
  15. ·14 min read·monorepo

    Monorepo Git techniques: sparse checkout, partial clones, and staying fast at scale

    A 5 GB monorepo with a 14-minute clone is fixable. Sparse checkout, partial clones, commit-graph, and fsmonitor — practical Git techniques for monorepos at scale.

    Read post
  16. ·13 min read·multi-repo

    Multi-repo coordination: submodules, subtrees, and internal packages compared

    Three honest approaches to sharing code across many repos — Git submodules, Git subtrees, and internal package registries. When each fits, and the pitfalls of each.

    Read post
  17. ·14 min read·release-branches

    Release branches and hotfix workflows that don't lose commits

    A hotfix shipped to prod but never made it back to develop, then got reverted three weeks later. Here is how release branches and hotfix workflows actually work without losing commits.

    Read post
  18. ·14 min read·scaling

    Scaling a Git workflow: solo, small, medium, and large teams

    The Git workflow that worked at 5 engineers breaks at 30, and the one that works at 30 is overkill at 5. Here is what changes at each team-size boundary, with concrete examples.

    Read post
  19. ·14 min read·trunk-based

    Trunk-based development: when it wins and when it doesn't

    Trunk-based development works for teams that have automated tests, feature flags, and a fast review culture. Without those, it hurts. Here is when TBD wins, when it loses, and why.

    Read post