agentsclimarketplace

Git advanced merging

Skill narenaryan/agent-skills/skills/git/git-advanced-merging

Byte-sized agent skills for giving advanced knowledge to AI agents

Install
npx -y skills add narenaryan/agent-skills --skill git-advanced-merging

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Use when resolving non-trivial merge conflicts, choosing a merge strategy, or undoing a merge — covers -X options, diff3 markers, strategy vs option, reset vs revert -m, and re-merging reverted branches

SKILL.md

2.4 KB, as published. Nobody here has run it

Advanced Git Merging

Conflict Marker Style

Default hides the common ancestor. Show it:

git config --global merge.conflictStyle zdiff3   # git 2.35+; else diff3
git checkout --conflict=diff3 path               # re-render existing conflict

Markers become <<<ours / ||| base / === / theirs >>> — resolution is far easier.

Side-Picking

git checkout --ours path
git checkout --theirs path
git add path

During rebase, ours/theirs swap: "theirs" = the commits being replayed.

Strategy (-s) vs Strategy Option (-X)

  • Strategy (-s) picks the algorithm: ort (default), recursive, resolve, octopus, ours, subtree.
  • Option (-X) tunes a strategy. -X ours only breaks ties; non-conflicting changes still merge.
git merge -X ours feature           # merge all, prefer ours on conflict
git merge -s ours feature           # fake-merge: record, keep tree unchanged
git merge -X ignore-all-space feature
git merge -X patience feature       # better diff for reordered blocks

-s ours says "we abandon their work but don't want future merges replaying it."

Inspecting

git ls-files -u                     # stages 1=base, 2=ours, 3=theirs
git show :1:f > base; git show :2:f > ours; git show :3:f > theirs
git merge-file -p ours base theirs > resolved
git log --merge -p path             # commits on either side touching file
git log --left-right HEAD...MERGE_HEAD

Abort

git merge --abort                   # before committing
git reset --merge                   # equivalent

Undoing a Completed Merge

Local only: git reset --hard ORIG_HEAD

Already pushed: git revert -m 1 <merge-sha> (keep mainline, drop feature side).

Gotcha: after revert -m 1, re-merging the same branch pulls only new commits — Git thinks the rest is already merged. Fix:

git revert <revert-commit>          # un-revert
git merge feature                   # clean re-merge

Pitfalls

  • No -s theirs exists; do -s ours on the other branch then merge back.
  • Octopus strategy refuses to auto-resolve conflicts.
  • For recurring conflicts, enable rerere.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.