#Version Control

18 posts

Practical Git Workflows #1: Branching Strategies — GitHub Flow and Trunk-Based
7 min read

Practical Git Workflows #1: Branching Strategies — GitHub Flow and Trunk-Based

Compare the structure and prerequisites of Git Flow, GitHub Flow, and trunk-based development, and build criteria for choosing one based on team size and release cadence.

Git Basics #5: Undoing Changes — restore, reset, and revert
7 min read

Git Basics #5: Undoing Changes — restore, reset, and revert

Discarding edits, unstaging files, amending commits, undoing commits, and reverting pushed commits. A three-areas map of when to reach for restore, reset, or revert.

Git Basics #4: Remotes — clone, fetch, pull, push, and What origin Really Is
7 min read

Git Basics #4: Remotes — clone, fetch, pull, push, and What origin Really Is

We organize the flow of cloning a repository and exchanging work with a remote through fetch, pull, and push. Along the way we pin down what origin and origin/main actually are.

Git Basics #3: Branching and Merging — Fast-forward and 3-way
7 min read

Git Basics #3: Branching and Merging — Fast-forward and 3-way

From the fact that a branch is a lightweight pointer to a commit, through the difference between fast-forward and 3-way merges, to reading conflict markers and resolving them.

Git Basics #2: add, commit, status — What the Staging Area Means
8 min read

Git Basics #2: add, commit, status — What the Staging Area Means

Read the untracked, modified, and staged states from real git status output, and record your first snapshot with add and commit. Why the staging area exists, the two kinds of diff, and what .gitignore keeps out of history.

Git Basics #1: What Git Is — the Snapshot Model and the Three Areas
7 min read

Git Basics #1: What Git Is — the Snapshot Model and the Three Areas

From why version control exists to the snapshot model, the .git directory that git init creates, and the three areas — working directory, staging area, and repository. The mental picture to build first when learning Git.