resolve-merge-conflicts

resolve-merge-conflicts

熱門

解決 Git 合併衝突,只提取未解決的路徑、衝突區塊和精簡差異,而非將整個檔案載入上下文。在合併、變基、揀選或 stash pop 因衝突而停止時,當 `git status` 顯示未合併路徑,或檔案包含衝突標記時使用。

124星標
0分支
更新於 2026/7/10
SKILL.md
readonlyread-only
name
resolve-merge-conflicts
description

解決 Git 合併衝突,只提取未解決的路徑、衝突區塊和精簡差異,而非將整個檔案載入上下文。在合併、變基、揀選或 stash pop 因衝突而停止時,當 `git status` 顯示未合併路徑,或檔案包含衝突標記時使用。

解決合併衝突

概述

在精簡檢視不足之前,不要開啟完整檔案來解決衝突。先從摘要開始,然後一次檢查一個衝突檔案。

工作流程

  1. 從摘要開始。
python3 .agents/skills/resolve-merge-conflicts/scripts/extract_conflict_context.py

使用摘要來識別哪些檔案未解決、存在哪些索引階段,以及每個檔案包含多少文字區塊。

  1. 深入一個檔案。
python3 .agents/skills/resolve-merge-conflicts/scripts/extract_conflict_context.py --file path/to/file

優先使用此方式而非讀取整個檔案。該腳本只會列印附近的上下文、每個區塊的 ours / base / theirs 部分,以及 ourstheirs 之間的精簡統一差異。

  1. 解決該檔案。
  • 在適當情況下,使用 git checkout --ours -- path/to/filegit checkout --theirs -- path/to/file 直接採用某一方的內容。
  • 否則直接編輯檔案並移除衝突標記。
  • 只有在精簡輸出不足以決定正確合併時,才讀取更多檔案內容。
  1. 重新檢查未解決的檔案。
python3 .agents/skills/resolve-merge-conflicts/scripts/extract_conflict_context.py
git diff --name-only --diff-filter=U
  1. 驗證解決結果。
  • 確保沒有未合併的路徑殘留。
  • 確保已解決的檔案中沒有 <<<<<<<=======>>>>>>> 標記殘留。
  • 針對受影響的區域執行目標測試、建置或 lint。
  • 將已解決的檔案加入暫存區。

指令

僅摘要

python3 .agents/skills/resolve-merge-conflicts/scripts/extract_conflict_context.py

單一檔案的詳細檢視

python3 .agents/skills/resolve-merge-conflicts/scripts/extract_conflict_context.py --file path/to/file

所有衝突檔案的詳細檢視

python3 .agents/skills/resolve-merge-conflicts/scripts/extract_conflict_context.py --all

JSON 輸出

python3 .agents/skills/resolve-merge-conflicts/scripts/extract_conflict_context.py --file path/to/file --json

調整輸出大小

python3 .agents/skills/resolve-merge-conflicts/scripts/extract_conflict_context.py \
  --file path/to/file \
  --context 3 \
  --max-lines 60

備註

  • 在直接開啟衝突檔案之前,先使用此腳本。
  • 一次解決一個檔案,以保持上下文精簡。
  • 預期會遇到基於標記的文字衝突,以及僅索引衝突(例如 add/add 或 modify/delete)。腳本會摘要兩者,並在工作樹檔案沒有衝突標記時,回退到索引階段預覽。