关于 fix-merge-conflicts
用于解决合并冲突并尽量保留双方意图的技能。它指导开发者完成集成、变更分析、验证,并在无法完成时安全中止或交接。
主要功能
- 01先集成获准的基线
- 02检查双方的变更
- 03默认保留双方意图
- 04解决后运行项目检查
- 05安全中止或报告未完成工作
适用场景
- 01解决自有分支上的冲突
- 02分析合并或变基中的冲突变更
- 03验证并完成冲突解决
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ yeachan-heo/ oh-my-claudecode --skill fix-merge-conflicts安装后在 Claude Code 中输入/fix-merge-conflicts确认已加载。
README 原文English
来自项目 READMEREADME 暂无中文译文,以下为英文原文;中文介绍见上方。
Fix Merge Conflicts
A conflict is two intents meeting in one file. Resolution that flattens either intent is a bug with a clean git status.
Workflow
- Establish ownership: you resolve conflicts on a branch you own, against a base others own. Conflicts on a shared branch get reported to the owner, not resolved unilaterally.
- Start the approved integration first: fetch the remote base
(
git fetch origin <base>) and merge the fetched SHA —git merge FETCH_HEAD(or the project's rebase convention, when the caller has not constrained it) — so the conflicts you inspect match what GitHub reported; a local base ref can be absent or behindorigin/<base>, andgit mergenever refreshes it implicitly. Amergeable: conflictinganswer from the remote, or a clean local branch, has noMERGE_HEAD—git log --mergebefore integrating exits 128. - Read both intents:
git log --merge -p -- <file>for each conflicted file once the merge is in progress — what did each side change and why (commit messages are evidence). Conflict markers show the what; the commits show the why. On the rebase path there is noMERGE_HEAD—git log --mergereads nothing there; read the topic side withgit show REBASE_HEAD -- <file>(the dotted rangeREBASE_HEAD..HEADexcludes the topic commit itself, so it shows only the base side) and the base side withgit log -p HEAD -- <file>until the rebase continues. When the caller forbids starting an integration at all (e.g. read-only inspection), compare explicit ranges instead:git log -p <base>...HEAD -- <file>. - Resolve: the default is both-intent-preserving — base side's change and branch side's change both survive, composed. When the intents are genuinely incompatible, the base (upstream) intent wins on shared surfaces and the branch adapts, and the override is reported with its reason.
- Validate: run the project's checks (build/test/lint at minimum) on
the resolved tree. A resolution that compiles but breaks a test took the
wrong side somewhere.
If intent analysis, resolution, or validation cannot complete after a
merge starts, run
git merge --abort; after a rebase starts, rungit rebase --abort. If abort is unsafe or unavailable, stop and hand off the repository with the activeMERGE_HEAD/REBASE_HEADand conflict list explicitly reported. - Finalize: for a rebase, stage each resolved file and run
git rebase --continuerepeatedly untilgit statusshows no active rebase. Validate that final tree before pushing. Then commit the resolution with a message naming what each side wanted. No force-push to shared branches, ever; a rebased own-branch uses--force-with-lease— unless a caller (e.g.babysit) forbids rebase and force-push entirely, in which case merge-commit resolution is the only path.
Rules
- Never resolve by "take ours/theirs" wholesale; that is choosing a winner, not resolving.
- Generated files (lockfiles, snapshots) regenerate rather than hand-merge.
- The resolution commit's message states the two intents it composed —
the next archaeologist (
why) will need it.
评论
支持 Markdown