git ããŒãžã³ã³ããªã¯ããäœç³»çã«è§£æ±ºãã - äž¡ããŒãžã§ã³ãåæããæŠç¥ãéžæããè§£æ±ºãæ€èšŒãã
npx claudepluginhub mysmon/spec-workflow-toolkit[ãã¡ã€ã«ãã¹ or --all]# /merge-conflict - äœç³»çãªããŒãžã³ã³ããªã¯ã解決 ## Language Mode ãã¹ãŠã®åºåã¯æ¥æ¬èªã§è¡ãã詳现㯠`language-enforcement` ã¹ãã«ãåç §ã --- git ã®ããŒãžã³ã³ããªã¯ããåæã»è§£æ±ºã»æ€èšŒããããã®æ§é åã¯ãŒã¯ãããŒããµããšãŒãžã§ã³ãå§ä»»ã掻çšããã ## èšèšåå 1. **解決åã«çè§£ãã**: 倿ãäžãåã«äž¡ããŒãžã§ã³ãåæãã 2. **æå³ãä¿æãã**: äž¡ãã©ã³ãã®å€æŽç®çãç¶æãã 3. **è§£æ±ºãæ€èšŒãã**: ã³ã³ããªã¯ã解決åŸã¯å¿ ããã¹ããå®è¡ãã 4. **倿ãèšé²ãã**: ç¹å®ã®è§£æ±ºæ¹æ³ãéžãã çç±ãèšé²ãã --- ## 䜿çšã¿ã€ãã³ã° - git merge ã§ã³ã³ããªã¯ããçºçããå Žå - git rebase ã§ã³ã³ããªã¯ããçºçããå Žå - cherry-pick ãã³ã³ããªã¯ãã«ãã倱æããå Žå - è€éãªã³ã³ããªã¯ãã«äœç³»çãªã¢ãããŒããå¿ èŠãªå Žå ## å ¥ååœ¢åŒ --- ## å®è¡æé ### ãã§ãŒãº 1: ã³ã³ããªã¯ãæ€åº **ç®ç:** ã³ã³ããªã¯ãã®ãããã¹ãŠã®ãã¡ã€ã«ãšãã®ç¯å²ãç¹å®ããã **éèŠ: ã³ã³ããªã¯ãæ€åºã¯ code-explorer ãšãŒãžã§ã³ãã«å§ä»»ããïŒgit åæã³ãã³ããçŽæ¥å®è¡ããªãããšïŒ:...
ãã¹ãŠã®åºåã¯æ¥æ¬èªã§è¡ãã詳现㯠language-enforcement ã¹ãã«ãåç
§ã
git ã®ããŒãžã³ã³ããªã¯ããåæã»è§£æ±ºã»æ€èšŒããããã®æ§é åã¯ãŒã¯ãããŒããµããšãŒãžã§ã³ãå§ä»»ã掻çšããã
# ç¹å®ã®ãã¡ã€ã«ã®ã³ã³ããªã¯ãã解決
/merge-conflict src/components/Auth.tsx
# çŸåšã®ãã¹ãŠã®ã³ã³ããªã¯ãã解決
/merge-conflict --all
# ã€ã³ã¿ã©ã¯ãã£ãã¢ãŒãïŒäžèЧããéžæïŒ
/merge-conflict
ç®ç: ã³ã³ããªã¯ãã®ãããã¹ãŠã®ãã¡ã€ã«ãšãã®ç¯å²ãç¹å®ããã
éèŠ: ã³ã³ããªã¯ãæ€åºã¯ code-explorer ãšãŒãžã§ã³ãã«å§ä»»ããïŒgit åæã³ãã³ããçŽæ¥å®è¡ããªãããšïŒ:
code-explorer ãšãŒãžã§ã³ããèµ·å:
ã¿ã¹ã¯: ãã¹ãŠã® git ããŒãžã³ã³ããªã¯ããæ€åº
å®è¡:
- git diff --name-only --diff-filter=UïŒã³ã³ããªã¯ããã¡ã€ã«äžèЧïŒ
- git status --porcelainïŒã³ã³ããªã¯ãæŠèŠã®ååŸïŒ
æœåº:
- ã³ã³ããªã¯ãã®ãããã¡ã€ã«ãã¹äžèЧ
- åãã¡ã€ã«ã®ã³ã³ããªã¯ãã¹ããŒã¿ã¹ïŒUU, AA, DDïŒ
- ã³ã³ããªã¯ãç·æ°
Thoroughness: quick
åºå: [file_path, conflict_status] ã®æ§é åãªã¹ã
ãšãŒãžã§ã³ãã®åºåãã³ã³ããªã¯ãæ å ±ãšããŠäœ¿çšãããæ€åºã»åæãã§ãŒãºã§ã¯ã芪ã³ã³ããã¹ãã§ git åæã³ãã³ãïŒdiff, status, log, showïŒãçŽæ¥å®è¡ããªãããšã
ãšãŒãžã§ã³ããã³ã³ããªã¯ããªããšå ±åããå Žå:
git status ã®å®è¡ãææ¡ããTodoWrite ãªã¹ããäœæããïŒãšãŒãžã§ã³ãã®åºåã䜿çšããåã³ã³ããªã¯ããã¡ã€ã«ã1é ç®ãšããïŒã
ç®ç: åã³ã³ããªã¯ãã«ã€ããŠãäž¡ãµã€ãã®å€æŽå 容ãçè§£ããã
åã³ã³ããªã¯ããã¡ã€ã«ã«å¯ŸããŠã䞊åãšãŒãžã§ã³ããèµ·åãã:
éèŠ: ã³ã³ããªã¯ãããŒã«ãŒã®æœåºãå«ããã¹ãŠã®åæã code-explorer ãšãŒãžã§ã³ãã«å§ä»»ããããšã
code-explorer ãšãŒãžã§ã³ãã䞊åèµ·å:
ãšãŒãžã§ã³ã 1ïŒOursïŒ: "ours"ïŒçŸåšã®ãã©ã³ãïŒããŒãžã§ã³ãåæ
- ã©ã®ãããªå€æŽãè¡ããããïŒ
- ãããã®å€æŽã®æå³ã¯äœãïŒ
- ã©ã®ãããªäŸåé¢ä¿ããããïŒ
ãšãŒãžã§ã³ã 2ïŒTheirsïŒ: "theirs"ïŒåã蟌ã¿ãã©ã³ãïŒããŒãžã§ã³ãåæ
- ã©ã®ãããªå€æŽãè¡ããããïŒ
- ãããã®å€æŽã®æå³ã¯äœãïŒ
- ã©ã®ãããªäŸåé¢ä¿ããããïŒ
ãšãŒãžã§ã³ã 3ïŒã³ã³ããªã¯ãåæïŒ: ã³ã³ããªã¯ãã®æœåºãšåé¡
- ãã¹ãŠã®ã³ã³ããªã¯ãããŒã«ãŒïŒ<<<<<<< / ======= / >>>>>>>ïŒãæ€åº
- è¡çªå·ãšåšèŸºã³ã³ããã¹ããå ±å
- åã³ã³ããªã¯ããåé¡ïŒè¿œå å / ä¿®æ£å / åé€å / æ§é åïŒ
Thoroughness: medium
ãšãŒãžã§ã³ãã®åºåãã³ã³ããªã¯ãæ å ±ãšããŠäœ¿çšããã芪ã³ã³ããã¹ãã§ grep ãçŽæ¥å®è¡ããªãããšã
䞊åãšãŒãžã§ã³ãã®ãšã©ãŒãã³ããªã³ã°:
| ã·ããªãª | å¯Ÿå¿ |
|---|---|
| 3ã€ãšãæå | å®å šãªåæçµæã§ãã§ãŒãº 3 ã«é²ã |
| 1ã€å€±æ | 倱æãããšãŒãžã§ã³ããã¹ã³ãŒããçž®å°ããŠ1åãªãã©ã€ããªãã©ã€ã倱æããå Žåã¯éšåçãªåæã§é²è¡ |
| 2ã€å€±æ | äžå®å šãªåæã§ããããšããŠãŒã¶ãŒã«èŠåããªãã©ã€ãŸãã¯æ éã«é²è¡ãããéžæããã |
| 3ã€ãšã倱æ | é²è¡ããªãããŠãŒã¶ãŒã«éžæè¢ãæç€ºãã |
1ã2åã®ãšãŒãžã§ã³ãããªãã©ã€åŸã倱æããå Žå:
Question: "äžéšã®åæãšãŒãžã§ã³ãã倱æããŸããããã®ã³ã³ããªã¯ãã«ã€ããŠéšåçãªæ
å ±ã®ã¿ååŸã§ããŠããŸãã"
Header: "éšåçãªåæ"
Options:
- "å©çšå¯èœãªåæã§é²è¡ããïŒæåæ€èšŒãå¿
èŠãªå ŽåããïŒ"
- "ãã¹ãŠã®åæãšãŒãžã§ã³ãããªãã©ã€ãã"
- "代ããã«ã³ã³ããªã¯ãããŒã«ãŒããã®ãŸãŸè¡šç€ºãã"
3ã€ãã¹ãŠã®ãšãŒãžã§ã³ãã倱æããå Žå:
Question: "ã³ã³ããªã¯ãåæãå®å
šã«å€±æããŸãããã©ã®ããã«é²ããŸããïŒ"
Header: "åæå€±æ"
Options:
- "ã³ã³ããªã¯ãåæããªãã©ã€ãã"
- "ã³ã³ããªã¯ããã¡ã€ã«ãçŽæ¥è¡šç€ºããïŒæå解決ïŒ"
- "ãã®ãã¡ã€ã«ãä»ã¯ã¹ããããã"
ãŠãŒã¶ãŒããã³ã³ããªã¯ããã¡ã€ã«ãçŽæ¥è¡šç€ºããããéžæããå Žåããã¡ã€ã«ãèªã¿åãïŒ200è¡ä»¥äžïŒãã³ã³ããªã¯ãããŒã«ãŒã衚瀺ããã
ã³ã³ããªã¯ãã¿ã€ãã®åé¡ïŒãšãŒãžã§ã³ãåºåã䜿çšïŒ:
| ã¿ã€ã | ãã¿ãŒã³ | 解決ã¢ãããŒã |
|---|---|---|
| 远å å | äž¡ãµã€ããç°ãªãã³ãŒãã远å | éåžžã¯äž¡æ¹ãä¿æ |
| ä¿®æ£å | äž¡ãµã€ããåãè¡ãä¿®æ£ | æå³çãªããŒãžãå¿ èŠ |
| åé€å | äžæ¹ãåé€ã仿¹ãä¿®æ£ | ã©ã¡ãã®æå³ãåªå ããã倿 |
| æ§é å | ãªãã¡ã¯ã¿ãªã³ã°ã®ã³ã³ããªã¯ã | æåã§ã®æžãçŽããå¿ èŠãªå Žåãã |
ç®ç: åã³ã³ããªã¯ãã«æé©ãªè§£æ±ºã¢ãããŒããéžæããã
åæçµæããŠãŒã¶ãŒã«æç€ºãã:
## ã³ã³ããªã¯ã: [ãã¡ã€ã«å]
### OursïŒçŸåšã®ãã©ã³ãïŒ
[倿Žå
å®¹ãšæå³ã®ãµããªãŒ]
### TheirsïŒåã蟌ã¿ãã©ã³ãïŒ
[倿Žå
å®¹ãšæå³ã®ãµããªãŒ]
### ã³ã³ããªã¯ãã¿ã€ã: [ã¿ã€ã]
### æšå¥šãããè§£æ±ºæ¹æ³: [æšå¥šå
容]
解決æŠç¥ããŠãŒã¶ãŒã«ç¢ºèªãã:
Question: "ãã®ã³ã³ããªã¯ããã©ã®ããã«è§£æ±ºããŸããïŒ"
Header: "æŠç¥"
Options:
- "oursïŒçŸåšã®ãã©ã³ãïŒãä¿æ"
- "theirsïŒåã蟌ã¿ãã©ã³ãïŒãä¿æ"
- "äž¡æ¹ã®å€æŽãçµ±å"ïŒè¿œå åã³ã³ããªã¯ãã«æšå¥šïŒ
- "æåã§æå®ãã"
ç®ç: éžæããã解決æŠç¥ãé©çšããã
泚æ: åçŽãª git ç¶æ ã³ãã³ãïŒcheckout --ours/--theirs, addïŒã¯ã解決ãã§ãŒãºã§ã¯èŠªã³ã³ããã¹ãã§çŽæ¥å®è¡ããŠããããããã¯è»œéãªæäœã§ããã³ã³ããã¹ããæ¶è²»ããªãããã§ãŒãº 1ã2 ã®å§ä»»èŠä»¶ã¯åæã³ãã³ãïŒdiff, status, logïŒã«ã®ã¿é©çšãããã
ãours ãä¿æãã®å Žå:
git checkout --ours <file>
git add <file>
ãtheirs ãä¿æãã®å Žå:
git checkout --theirs <file>
git add <file>
ãäž¡æ¹ãçµ±åãã®å Žå:
éèŠ: code-architect ã¯èªã¿åãå°çšïŒWrite/Edit ããŒã«ãªãïŒãå®è£ ã¯é©åãªã¹ãã·ã£ãªã¹ãã«å§ä»»ããããšã
é©åãªã¹ãã·ã£ãªã¹ããšãŒãžã§ã³ãïŒfrontend-specialist ãŸã㯠backend-specialistïŒã«å§ä»»:
ã¿ã¹ã¯: ã³ã³ããªã¯ã解決 - äž¡ããŒãžã§ã³ã®çµ±å
ãã¡ã€ã«: [ã³ã³ããªã¯ããã¡ã€ã«ãã¹]
Ours ããŒãžã§ã³:
[ours ã®ã³ãŒã]
Theirs ããŒãžã§ã³:
[theirs ã®ã³ãŒã]
èŠä»¶:
- äž¡æ¹ã®å€æŽã®æ©èœãä¿æãã
- è«ççãªã³ã³ããªã¯ãã解決ãã
- ã³ãŒãã¹ã¿ã€ã«ã®äžè²«æ§ãç¶æãã
- ãã¹ãŠã®ã³ã³ããªã¯ãããŒã«ãŒïŒ<<<<<<< / ======= / >>>>>>>ïŒãé€å»ãã
- ç·šéåŸã«ãã¡ã€ã«ãã¹ããŒãžã³ã°ããïŒgit addïŒ
åºå: ã³ã³ããªã¯ãããŒã«ãŒãé€å»ãããããŒãžæžã¿ãã¡ã€ã«ã®ç¢ºèª
ã¹ãã·ã£ãªã¹ããšãŒãžã§ã³ãã®ãšã©ãŒãã³ããªã³ã°: ã¹ãã·ã£ãªã¹ããšãŒãžã§ã³ãã倱æãŸãã¯ã¿ã€ã ã¢ãŠãããå Žå:
Question: "èªåããŒãžã«å€±æããŸãããã©ã®ããã«é²ããŸããïŒ"
Header: "ããŒãžå€±æ"
Options:
- "äž¡æ¹ã®ããŒãžã§ã³ã衚瀺ããŠæåã§ããŒãžãã"
- "å¥ã®ã¢ãããŒãã§ããŒãžããªãã©ã€ãã"
- "äžæŠ ours ãä¿æããïŒåŸã§æå察å¿ãå¿
èŠïŒ"
- "äžæŠ theirs ãä¿æããïŒåŸã§æå察å¿ãå¿
èŠïŒ"
ã¹ãã·ã£ãªã¹ããšãŒãžã§ã³ãå®äºåŸ:
git add <file>ç®ç: è§£æ±ºãæ©èœãå£ããŠããªãããšã確èªããã
éèŠ: ãšãŒãžã§ã³ãã®èœåã«å¿ããŠæ€èšŒãåå²ããããšã
ã¹ããã 1: verification-specialist ã§ããŒã«ãŒãã§ãã¯ãèµ·åïŒèªã¿åãå°çšïŒ:
verification-specialist ãšãŒãžã§ã³ããèµ·å:
ã¿ã¹ã¯: ã³ã³ããªã¯ãããŒã«ãŒã®é€å»ã確èª
å
¥å:
- 解決æžã¿ãã¡ã€ã«: [ãã§ãŒãº 4 ã®ãªã¹ã]
ãã§ãã¯:
1. ã³ã³ããªã¯ãããŒã«ãŒãæ®ã£ãŠããªãããšïŒ<<<<<<< / ======= / >>>>>>>ïŒ
2. ãã¡ã€ã«æ§æã劥åœã§ããããšïŒæ§é åæïŒ
åºå:
- ããŒã«ãŒãã§ãã¯ã¹ããŒã¿ã¹ïŒPASS/FAILïŒ
- FAIL ã®å Žå: æ®åããŒã«ãŒã® file:line äœçœ®
Thoroughness: quick
ã¹ããã 2: qa-engineer ã§å®è¡ããŒã¹ã®æ€èšŒãèµ·åïŒBash 䜿çšå¯èœïŒ:
qa-engineer ãšãŒãžã§ã³ããèµ·å:
ã¿ã¹ã¯: 解決æžã¿ãã¡ã€ã«ã®æ€èšŒã³ãã³ããå®è¡
å
¥å:
- 解決æžã¿ãã¡ã€ã«: [ãã§ãŒãº 4 ã®ãªã¹ã]
å®è¡:
1. ãªã³ã¿ãŒïŒnpm run lint / eslint çïŒ
2. åãã§ãã¯ïŒtsc --noEmit çïŒïŒè©²åœããå ŽåïŒ
3. ãã¹ãïŒnpm test / pytest çïŒ
åºå:
- åãã§ãã¯ã®å®è¡ã¹ããŒã¿ã¹ïŒPASS/FAILïŒ
- FAIL ã®å Žå: file:line ä»ãã®å
·äœçãªãšã©ãŒè©³çް
- ç·åå€å®ïŒVERIFIED / ISSUES_FOUNDïŒ
泚æ: verification-specialist 㯠Bash ã³ãã³ããå®è¡ã§ããªããlint/type/test ã®å®è¡ã«ã¯ qa-engineer ã䜿çšããããšã
ãšãŒãžã§ã³ãã®åºåãæ€èšŒçµæãšããŠäœ¿çšããã芪ã³ã³ããã¹ãã§ lint/test ã³ãã³ããçŽæ¥å®è¡ããªãããšã
verification-specialist ãåé¡ãå ±åããå Žå:
Question: "æ€èšŒã§åé¡ãèŠã€ãããŸãããã©ã®ããã«é²ããŸããïŒ"
Header: "åé¡"
Options:
- "åé¡ãä¿®æ£ããŠåæ€èšŒãã"
- "ãŸã詳现ã確èªãã"
- "å
ã«æ»ããŠã³ã³ããªã¯ããå解決ãã"
ç®ç: ããŒãžã確å®ãã解決å 容ãèšé²ããã
ããŒãžç¶æ ã®ç¢ºèª:
git status
ãã¹ãŠã®ã³ã³ããªã¯ãã解決ãããå Žå:
Question: "ãã¹ãŠã®ã³ã³ããªã¯ããè§£æ±ºã»æ€èšŒãããŸãããã©ã®ããã«é²ããŸããïŒ"
Header: "å®äº"
Options:
- "merge/rebase ãç¶è¡ãã"ïŒæšå¥šïŒ
- "æçµ diff ãå
ã«ç¢ºèªãã"
- "æåã§å®äºãã"
ããŒãžã®å®äº:
# merge ã®å Žå
git merge --continue
# rebase ã®å Žå
git rebase --continue
# cherry-pick ã®å Žå
git cherry-pick --continue
ç®ç: 解決å å®¹ãšæ¹æ³ãèšé²ããã
## ããŒãžã³ã³ããªã¯ã解決ãµããªãŒ
### æäœ: [merge/rebase/cherry-pick]
### ãã©ã³ã: [çŸåš] <- [åã蟌ã¿]
### 解決æžã¿ãã¡ã€ã«
| ãã¡ã€ã« | ã³ã³ããªã¯ãã¿ã€ã | è§£æ±ºæ¹æ³ | æ€èšŒçµæ |
|----------|---------------------|----------|----------|
| `path/file1.ts` | 远å å | äž¡æ¹ãçµ±å | ãã¹ãåæ Œ |
| `path/file2.ts` | ä¿®æ£å | theirs ãä¿æ | ãªã³ãåæ Œ |
### 解決ã®å€æ
#### file1.ts
- **ã³ã³ããªã¯ã**: äž¡ãã©ã³ããã€ã³ããŒãã远å
- **è§£æ±ºæ¹æ³**: äž¡æ¹ã®ã€ã³ããŒãã»ãããä¿æããéè€ãé€å»
- **çç±**: äž¡æ¹ã®ã€ã³ããŒããããããã®æ©èœã«å¿
èŠ
#### file2.ts
- **ã³ã³ããªã¯ã**: ç°ãªãããªããŒã·ã§ã³ããžãã¯
- **è§£æ±ºæ¹æ³**: theirs ã䜿çšïŒããå
æ¬çïŒ
- **çç±**: theirs ã®æ¹ã远å ã®ãšããžã±ãŒã¹ãå«ã
### æ€èšŒçµæ
- [ ] ã³ã³ããªã¯ãããŒã«ãŒãæ®ã£ãŠããªãããš
- [ ] ãªã³ãåæ Œ
- [ ] åãã§ãã¯åæ Œ
- [ ] ãã¹ãåæ Œ
### 次ã®ã¹ããã
1. ããŒãžããã倿Žãã¬ãã¥ãŒãã
2. ãã«ãã¹ãã¹ã€ãŒããå®è¡ãã
3. æºåãã§ãããããã·ã¥ãã
<<<<<<< HEAD
import { AuthService } from './auth';
import { UserService } from './user';
=======
import { AuthService } from './auth';
import { LogService } from './log';
>>>>>>> feature-branch
è§£æ±ºæ¹æ³: ã€ã³ããŒããçµ±åããéè€ãé€å»:
import { AuthService } from './auth';
import { UserService } from './user';
import { LogService } from './log';
äž¡ãã©ã³ããåã颿°ãç°ãªãæ¹æ³ã§ä¿®æ£ããå Žåãäž¡æ¹ã®æå³ãçè§£ããçµ±äžãããå®è£ ãäœæããå¿ èŠãããã
äžæ¹ãã³ãŒããåé€ãã仿¹ãä¿®æ£ããå Žåãã©ã¡ãã®æå³ãåªå ããããŠãŒã¶ãŒã«ç¢ºèªããã