github-pr
npx skills add https://github.com/gn00678465/agentskills --skill github-pr
Agent 安装分布
Skill 文档
GitHub Pull Request 婿
åå©ä½¿ç¨è å»ºç«æä¿®æ¹ GitHub Pull Requestï¼èªååæåæ¯ commits 並ç¢çç¹é«ä¸æ PR æ¨é¡èæè¿°ã
åè½
- å»ºç« PRï¼å¾ç¶ååæ¯å»ºç« Pull Request å°ç®æ¨åæ¯
- ä¿®æ¹ PRï¼æ´æ°ç¾æ PR çæ¨é¡ææè¿°
- åæ commitsï¼èªå彿´åæ¯è®æ´ç¢ç PR å §å®¹
æ±ºçæµç¨
使ç¨è
è«æ± PR ç¸éæä½
â
ââ æ¥é© 1ï¼æª¢æ¥ç¶å忝æ¯å¦æå°æç PR
â â
â â gh pr view --json number,title,state 2>&1
â â
â ââ ãæè¼¸åºä¸ state="OPEN"ãâ PR å·²åå¨
â â â
â â ââ é²å
¥ãä¿®æ¹ PR æµç¨ã
â â - é¡¯ç¤ºç¾æ PR è³è¨
â â - è©¢å使ç¨è
è¦ä¿®æ¹çå
§å®¹
â â - å·è¡ gh pr edit æä»¤
â â
â ââ ãç¡è¼¸åºæé¯èª¤ãâ PR ä¸åå¨
â â
â ââ é²å
¥ãå»ºç« PR æµç¨ã
â - å·è¡å置檢æ¥
â - åæ commits
â - ç¢çæ¨é¡èæè¿°
â - å·è¡ gh pr create æä»¤
â
ââ æ¥é© 2ï¼å·è¡å°ææµç¨ä¸¦åå ±çµæ
æª¢æ¥ PR æ¯å¦åå¨
# 檢æ¥ç¶å忝æ¯å¦å·²æ PR
gh pr view --json number,title,state,url
夿·é輯ï¼
| 輸åºçµæ | 夿· | å¾çºåä½ |
|---|---|---|
è¿å JSON ä¸ state: "OPEN" |
PR å·²åå¨ä¸éåä¸ | é²å ¥ä¿®æ¹æµç¨ |
è¿å JSON ä¸ state: "MERGED" |
PR å·²åä½µ | è©¢åæ¯å¦å»ºç«æ° PR |
è¿å JSON ä¸ state: "CLOSED" |
PR å·²éé | è©¢åæ¯å¦ééæå»ºç«æ° PR |
é¯èª¤è¨æ¯ no pull requests found |
PR ä¸åå¨ | é²å ¥å»ºç«æµç¨ |
å»ºç« PR æµç¨
æ¥é© 0ï¼å置檢æ¥
確èªç¶å忝已æ¨éè³é 端ï¼
# åå¾ç¶å忝å稱
git rev-parse --abbrev-ref HEAD
# 檢æ¥åæ¯æ¯å¦å卿¼é 端
git ls-remote --heads origin $(git rev-parse --abbrev-ref HEAD)
è¥ç¡è¼¸åºï¼åæ¯å°æªæ¨ä¸é 端ï¼éå å·è¡ï¼
git push -u origin <ç¶å忝>
æ¥é© 1ï¼åå¾ commits æ¸ å®
åå¾ç¶å忝ç¸å°æ¼ç®æ¨åæ¯ï¼é è¨ mainï¼ç commitsï¼
git --no-pager log --oneline <ç®æ¨åæ¯>..<ç¶å忝>
æ¥é© 2ï¼åå¾ commit 詳細è³è¨
éå°æ¯å commit åå¾è®æ´çµ±è¨ï¼
git --no-pager show <commit-hash> --stat
æ¥é© 3ï¼ç¢ç PR æ¨é¡
æ ¹æ commit æ¸éæ±ºå®æ¨é¡çç¥ï¼
| æ æ³ | æ¨é¡çç¥ |
|---|---|
| å®ä¸ commit | ç´æ¥ä½¿ç¨è©² commit è¨æ¯ |
| å¤å commits | ç¸½çµææè®æ´çæè¿°æ§æ¨é¡ |
æ¥é© 4ï¼ç¢ç PR æè¿°
宿´ç¯æ¬è«åè
references/pr-template.md
PR å §å®¹æå å«ä»¥ä¸åå¡ï¼
### æè¦
[ä¸å¥è©±ç¸½çµæ¤ PR ç主è¦ç®ç]
### ä¿®æ¹å
§å®¹
- è®æ´é
ç® 1ï¼æè¿°å
·é«çä¿®æ¹å
§å®¹
- è®æ´é
ç® 2ï¼æè¿°å
·é«çä¿®æ¹å
§å®¹
- è®æ´é
ç® 3ï¼æè¿°å
·é«çä¿®æ¹å
§å®¹
### â ï¸ é¢¨éªè©ä¼°
[è©ä¼°æ¤ PR æ¯å¦æç ´å£æ§è®æ´ãéè¦ç¹å¥æ³¨æçå°æ¹]
常è¦é¢¨éªé¡åï¼
- è³æåº«è®æ´ï¼migrationãschema ä¿®æ¹ï¼
- API è®æ´ï¼endpoint ä¿®æ¹ãåæ¸è®æ´ï¼
- è¨å®æªè®æ´ï¼ç°å¢è®æ¸ãè¨å®åæ¸ï¼
- ç¸ä¾æ§æ´æ°ï¼å¥ä»¶çæ¬åç´ï¼
è¥ç¡é¢¨éªï¼å¯è¨»æï¼ãç¡ç ´å£æ§è®æ´ã
### å註
[å
¶ä»éè¦å¯©æ¥è
注æçå°æ¹ï¼å¦æ¸¬è©¦æ¹å¼ãé¨ç½²æ³¨æäºé
ãç¸é Issue é£çµç]
æ¥é© 5ï¼å»ºç« Pull Request
ä½¿ç¨ GitHub CLI å»ºç« PRã
â ï¸ éè¦ï¼ä½¿ç¨ --body-file é¿å
è½ç¾©åé¡
ç´æ¥å¨å½ä»¤åä½¿ç¨ --body æå°è´æè¡ç¬¦ \n åå
¶ä»ç¹æ®å符åºç¾è½ç¾©åé¡ã建è°ä½¿ç¨æªæ¡æ¹å¼ï¼
# æ¹æ³ 1ï¼æ¨è¦ï¼ï¼å°å
§å®¹å¯«å
¥æ«åæªæ¡
# 1. å»ºç«æ«åæªæ¡ pr-body.mdï¼å¯«å
¥ PR æè¿°å
§å®¹
# 2. ä½¿ç¨ --body-file è®åæªæ¡
gh pr create --base <ç®æ¨åæ¯> --head <ç¶å忝> --title "<æ¨é¡>" --body-file pr-body.md
# 3. 建ç«å®æå¾åªé¤æ«åæªæ¡
PowerShell ç¯ä¾ï¼
# å° PR æè¿°å¯«å
¥æªæ¡
@"
### æè¦
實ä½ä½¿ç¨è
ç»å
¥åè½
### ä¿®æ¹å
§å®¹
- æ°å¢ç»å
¥ API 端é»
- å¯¦ä½ JWT é©èæ©å¶
### â ï¸ é¢¨éªè©ä¼°
ç¡ç ´å£æ§è®æ´
"@ | Out-File -FilePath pr-body.md -Encoding UTF8
# å»ºç« PR
gh pr create --base main --title "feat: 實ä½ç»å
¥åè½" --body-file pr-body.md
# æ¸
çæ«åæªæ¡
Remove-Item pr-body.md
Bash ç¯ä¾ï¼
# å° PR æè¿°å¯«å
¥æªæ¡
cat << 'EOF' > pr-body.md
### æè¦
實ä½ä½¿ç¨è
ç»å
¥åè½
### ä¿®æ¹å
§å®¹
- æ°å¢ç»å
¥ API 端é»
- å¯¦ä½ JWT é©èæ©å¶
### â ï¸ é¢¨éªè©ä¼°
ç¡ç ´å£æ§è®æ´
EOF
# å»ºç« PR
gh pr create --base main --title "feat: 實ä½ç»å
¥åè½" --body-file pr-body.md
# æ¸
çæ«åæªæ¡
rm pr-body.md
常ç¨é¸é ï¼
| é¸é | 說æ |
|---|---|
--body-file <file> |
徿ªæ¡è®å PR æè¿°ï¼æ¨è¦ï¼ |
--draft |
建ç«è稿 PR |
--reviewer <users> |
æå®å¯©æ ¸è ï¼éèåéï¼ |
--assignee <users> |
æå®è² 責人 |
--label <labels> |
æ°å¢æ¨ç±¤ |
ä¿®æ¹ PR æµç¨
ç¶ PR å·²å卿ï¼é²å ¥æ¤æµç¨ã
æ¥é© 1ï¼åå¾ç¾æ PR è³è¨
gh pr view --json number,title,body,state,url,headRefName,baseRefName
æ¥é© 2ï¼é¡¯ç¤º PR æè¦
å使ç¨è 顯示ï¼
- PR ç·¨èèæ¨é¡
- ç®åçæ ï¼OPEN/DRAFTï¼
- 便ºåæ¯ â ç®æ¨åæ¯
- PR é£çµ
æ¥é© 3ï¼ç¢ºèªä¿®æ¹å §å®¹
æ ¹æä½¿ç¨è éæ±å·è¡å°ææä½ï¼
ä¿®æ¹æ¨é¡
gh pr edit <PRç·¨èæURL> --title "<æ°æ¨é¡>"
ä¿®æ¹æè¿°
gh pr edit <PRç·¨èæURL> --body "<æ°æè¿°>"
æ°å¢å¯©æ ¸è /æ¨ç±¤
gh pr edit <PRç·¨èæURL> --add-reviewer <users>
gh pr edit <PRç·¨èæURL> --add-label <labels>
æ¥çç¾æ PR
# ååºç¶å repo ç PR
gh pr list
# æ¥çç¹å® PR 詳æ
gh pr view <PRç·¨è>
注æäºé
- å èçå·²æäº¤çè®æ´ï¼å¿½ç¥æª staged çè®æ´
- èªè¨è¦æ±ï¼PR æ¨é¡èæè¿°ä½¿ç¨ç¹é«ä¸æ (zh-TW)
- ç®æ¨åæ¯é è¨ï¼è¥ä½¿ç¨è
æªæå®ï¼é è¨çº
main - éè¦ GitHub CLIï¼ç¢ºä¿å·²å®è£ä¸¦ç»å
¥
ghå·¥å ·
ç¯ä¾
ç¯ä¾ 1ï¼PR ä¸åå¨ – å»ºç«æ° PR
使ç¨è è«æ±ï¼ ã幫æå»ºç« PR å° developã
å·è¡æµç¨ï¼
- æª¢æ¥ PRï¼
gh pr viewâ é¯èª¤ãno pull requests foundã - 夿·ï¼PR ä¸åå¨ï¼é²å ¥å»ºç«æµç¨
- å置檢æ¥ï¼ç¢ºèªåæ¯å·²å¨é 端
- åå¾ commitsï¼
git --no-pager log --oneline develop..HEAD - åæè®æ´ç¢çæ¨é¡èæè¿°
- å·è¡ï¼
gh pr create --base develop --head feature/login --title "feat: 實ä½ä½¿ç¨è ç»å ¥åè½" --body "..."
ç¯ä¾ 2ï¼PR å·²åå¨ – èªåé²å ¥ä¿®æ¹æ¨¡å¼
使ç¨è è«æ±ï¼ ã幫æé PRã
å·è¡æµç¨ï¼
- æª¢æ¥ PRï¼
gh pr view --json number,title,state{"number": 42, "title": "feat: æ°å¢ç»å ¥åè½", "state": "OPEN"} - 夿·ï¼PR å·²åå¨ï¼é²å ¥ä¿®æ¹æµç¨
- åå ±ï¼ãæ¤åæ¯å·²æ PR #42ãfeat: æ°å¢ç»å ¥åè½ãï¼è«åè¦é²è¡ä»éº¼ä¿®æ¹ï¼ã
- çå¾ ä½¿ç¨è æç¤º
ç¯ä¾ 3ï¼æç¢ºä¿®æ¹ PR
使ç¨è è«æ±ï¼ ãä¿®æ¹ PR #42 çæ¨é¡çºãä¿®æ£è³¼ç©è»è¨ç®é¯èª¤ãã
å·è¡ï¼
gh pr edit 42 --title "ä¿®æ£è³¼ç©è»è¨ç®é¯èª¤"
ç¯ä¾ 4ï¼PR å·²åä½µ
使ç¨è è«æ±ï¼ ã幫æå»º PRã
å·è¡æµç¨ï¼
- æª¢æ¥ PRï¼
gh pr view --json number,title,state{"number": 38, "title": "feat: èåè½", "state": "MERGED"} - 夿·ï¼PR å·²åä½µ
- åå ±ï¼ãæ¤åæ¯ç PR #38 å·²åä½µãè¥ææ°çè®æ´éè¦å»ºç« PRï¼è«ç¢ºèªå·²ææ°ç commitsãã
åèè³æ
references/pr-template.md– PR æè¿°ç¯æ¬è編寫æåreferences/gh-pr-commands.md– GitHub CLI PR ç¸éæä»¤å®æ´åè