5 exercises on the natural English of Git branches: cutting a branch, merging into a target, fast-forward merges, conflicts, and branch lifetimes.
Key patterns
cut / create a branch, branch off main
merge into a target vs rebase onto a base
fast-forward merge → no merge commit, linear history
merge conflict → resolve clashing changes
short-lived vs long-lived branches
0 / 5 completed
1 / 5
A developer is about to start work on a new login screen. The standard phrasing for starting a fresh branch is:
"I’ll ___ a branch for the new login screen."
Cut a branch — the idiomatic verb for creating a new branch:
Developers say "cut a branch" or "create a branch" interchangeably; "cut" is the more colloquial, native-sounding choice. You also "branch off" a base.
Core branch-creation collocations:
create / cut a branch → start a new line of work (git switch -c feature/login)
branch off main → create the branch from main as the base
base a branch on a release branch → choose the starting point
spin up a branch → casual synonym for cut/create
Why not the others? You "open" a pull request, not a branch; you "raise" an issue or a PR; "draw a branch" is not English. The verb that pairs naturally with branch is cut (or create).
2 / 5
Two developers edited the same lines of the same file on different branches. When Git can’t auto-combine them, you get a:
Merge conflict — the fixed term for clashing changes:
A merge conflict happens when Git cannot automatically reconcile two sets of changes to the same region of a file. Git marks the file with <<<<<<<, =======, >>>>>>> markers, and you must resolve the conflict by hand.
Conflict vocabulary:
hit / run into a merge conflict → encounter one
resolve a conflict → fix it and stage the result
conflict markers → the <<</>>> lines Git inserts
abort the merge → back out with git merge --abort
Why not the rest? "Merge collision", "branch clash" and "commit overlap" are not real Git terms — only merge conflict is the established collocation.
3 / 5
Your feature branch is directly ahead of main with no diverging commits. Git can move the branch pointer forward without creating a merge commit. This is called a:
Fast-forward merge — no merge commit needed:
When the target branch (e.g. main) has not moved on since you branched off, Git can simply fast-forward the pointer to the tip of your branch. No new merge commit is created, so history stays perfectly linear.
Merge-strategy vocabulary:
fast-forward merge → pointer just moves forward, linear history
three-way merge → both branches diverged; Git makes a merge commit
squash merge → collapse a branch’s commits into one before merging
no-ff merge (git merge --no-ff) → force a merge commit even when fast-forward is possible
Contrast: a three-way merge happens when both branches have new commits; a squash merge is about commit count, not history shape. Only fast-forward describes moving the pointer with no merge commit.
4 / 5
A tech lead says: "Keep your branches ___ — merge them within a day or two so they don’t drift from main."
Which adjective is the correct opposite of "long-lived"?
Short-lived branches — the recommended modern practice:
A short-lived branch exists for hours or a day and is merged quickly, minimising drift and conflicts. Its opposite, a long-lived branch, lingers for weeks and accumulates integration risk — the pain that trunk-based development tries to avoid.
Branch-lifetime collocations:
short-lived branch → merged fast, stays close to main
long-lived branch → release/develop branches that persist (and risk drift)
drift from main → fall behind and diverge over time
stale branch → abandoned, no recent commits
Why "short-lived"? The fixed antonym pair in English is long-lived / short-lived. "Brief-lived", "fast-lived" and "quick-lived" are not idiomatic — only short-lived is standard.
5 / 5
A reviewer comments on a pull request: "Please ___ this work ___ the release/2.0 branch, not main."
Which preposition pairing correctly expresses the merge target?
Merge into — the correct preposition for a merge target:
You merge a branch into another branch. The destination always takes into: "merge feature/xinto main".
Branch-direction prepositions (easy to mix up):
merge a branch into a target → combine, creating a merge or fast-forward
rebase a branch onto a base → replay commits on a new base (rebase takes onto)
branch off / branch from main → create from a base
open a PR against main → "against" is for PR targets, not merges
Key contrast: remember the pairing merge INTO vs rebase ONTO. "Merge onto/over" is wrong, and "against" belongs to opening a PR, not merging.