fix: cc-resolve がマージコミットを作るよう修正

--no-commit --no-ff を使ってマージ状態を常に保持し、
最終的な git commit が必ずマージコミット(親2つ)になるようにする。
また MERGE_HEAD チェックと git reset 禁止を追加し、
Claude がマージ状態をリセットしてしまうケースを防ぐ。
This commit is contained in:
nrslib 2026-03-04 00:25:12 +09:00
parent 8430948475
commit 1b1f758c56

View File

@ -57,7 +57,9 @@ jobs:
id: merge id: merge
run: | run: |
git fetch origin main git fetch origin main
if git merge origin/main --no-edit 2>/dev/null; then # --no-commit --no-ff: コンフリクトの有無にかかわらず常にマージ状態を保持する
# これにより最後の git commit が必ずマージコミット親2つを作る
if git merge --no-commit --no-ff origin/main 2>/dev/null; then
echo "conflicts=false" >> "$GITHUB_OUTPUT" echo "conflicts=false" >> "$GITHUB_OUTPUT"
else else
echo "conflicts=true" >> "$GITHUB_OUTPUT" echo "conflicts=true" >> "$GITHUB_OUTPUT"
@ -224,6 +226,8 @@ jobs:
- 「とりあえず片方」で全ファイルを一括解決しない - 「とりあえず片方」で全ファイルを一括解決しない
- コンフリクトマーカー (`<<<<<<<`) が残ったままにしない - コンフリクトマーカー (`<<<<<<<`) が残ったままにしない
- `git merge --abort` を実行しない - `git merge --abort` を実行しない
- `git reset` を実行しないMERGE_HEAD が消えてマージコミットが作れなくなる)
- `.git/MERGE_HEAD` を保持したまま作業すること
PROMPT PROMPT
)" --verbose )" --verbose
env: env:
@ -233,7 +237,10 @@ jobs:
- name: Commit and push - name: Commit and push
run: | run: |
git add -A git add -A
if ! git diff --cached --quiet; then # MERGE_HEAD があればマージコミット、なければ通常コミット
if [ -f .git/MERGE_HEAD ]; then
git commit -m "merge: integrate main into PR branch"
elif ! git diff --cached --quiet; then
git commit -m "fix: resolve merge conflicts" git commit -m "fix: resolve merge conflicts"
fi fi
AHEAD=$(git rev-list --count origin/${{ steps.pr.outputs.branch }}..HEAD 2>/dev/null || echo "0") AHEAD=$(git rev-list --count origin/${{ steps.pr.outputs.branch }}..HEAD 2>/dev/null || echo "0")