git-release
npx skills add https://github.com/krissss/skills --skill git-release
Agent 安装分布
Skill 文档
Git èªå¨åå¸ï¼GitHub / GitLabï¼
åè½æ¦è¿°
èªå¨å GitHub/GitLab Release å叿µç¨ï¼éµå¾ªè¯ä¹åçæ¬ï¼Semantic Versioningï¼è§èãèªå¨åæ Git æäº¤è®°å½å¹¶æ´æ° CHANGELOG.mdï¼ç¶åç¡®å®åéççæ¬å·å¹¶å®æåå¸ã
å叿µç¨
æ¥éª¤ 0: éªè¯ Git å¹³å°
æ£æ¥å½åä»åºç Git å¹³å°ç±»åï¼
git remote get-url origin
è§£æå¹¶éªè¯ URL æ ¼å¼ï¼
GitHubï¼
- HTTPS:
https://github.com/owner/repo.git - SSH:
git@github.com:owner/repo.git - æå
owner/repoç¨äºåç»å建 GitHub Release
GitLabï¼
- HTTPS:
https://gitlab.com/owner/repo.gitæèªæç®¡https://gitlab.example.com/owner/repo.git - SSH:
git@gitlab.com:owner/repo.gitægit@gitlab.example.com:owner/repo.git - æå
owner/repoï¼æå®æ´è·¯å¾ç¨äºèªæç®¡ï¼ç¨äºåç»å建 GitLab Release
æ¢ä¸æ¯ GitHub ä¹ä¸æ¯ GitLabï¼
- éç¥ç¨æ·æ¤æè½ä» æ¯æ GitHub å GitLab
- è¯¢é®æ¯å¦ä» æ§è¡ git tag/pushï¼è·³è¿ Release å建ï¼
æ£æµå°å¹³å°åï¼ç»§ç»æ§è¡æ¥éª¤ 1
æ¥éª¤ 1: åææäº¤å¹¶æ´æ° CHANGELOG
èªå¨åææè¿ç Git æäº¤å¹¶æ´æ° CHANGELOG.mdï¼
- è·åèªä¸æ¬¡åå¸ä»¥æ¥çæäº¤ï¼
# è·åææ°æ ç¾
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")
# è·åèªä¸æ¬¡æ ç¾ä¹åçæäº¤ï¼å¦ææ²¡ææ ç¾åè·åæææäº¤ï¼
if [ -n "$LATEST_TAG" ]; then
git log ${LATEST_TAG}..HEAD --pretty=format:"%h|%s|%an" --reverse
else
git log --pretty=format:"%h|%s|%an" --reverse
fi
- è§£æå¹¶åç±»æäº¤ä¿¡æ¯ï¼
ä½¿ç¨ Conventional Commits æ ¼å¼è¿è¡åç±»ï¼
feat:â Addedï¼æ°åè½ï¼fix:â Fixedï¼Bug ä¿®å¤ï¼break:æBREAKING CHANGE:â Changedï¼ç ´åæ§åæ´ï¼refactor:,perf:,chore:,docs:,test:,style:â Changedï¼å ¶ä»åæ´ï¼
对æ¯ä¸ªæäº¤ä¿¡æ¯ï¼
- æåç±»å«ï¼typeï¼åç¼
- æå scopeï¼å¦ææï¼ï¼å¨æè¿°æ¶æ¾ç¤ºä¸º
scope: xxx - æ¸ çæ¶æ¯ï¼ç§»é¤ conventional commit åç¼ï¼
- æç±»å«åç»
- æ´æ° CHANGELOG.mdï¼
读åç°æç CHANGELOG.md å¹¶æ´æ° [Unreleased] é¨åï¼
## [Unreleased]
### Added
- scope: feature åè½æè¿° 1
- åè½æè¿° 2
### Changed
- scope: refactor éæ/å
¶ä»åæ´ 3
- **Breaking**: ç ´åæ§åæ´ 4
### Fixed
- scope: fix Bug ä¿®å¤æè¿°
æ´æ°è§åï¼
- 妿
[Unreleased]é¨ååå¨ä¸æå 容ï¼è¿½å æ°æäº¤å°ç¸åºç±»å« - 妿
[Unreleased]é¨ååå¨ä½ä¸ºç©ºï¼å¡«å åç±»åçæäº¤ - 妿
[Unreleased]é¨åä¸åå¨ï¼å¨å¤´é¨å建æ°é¨å
å®ç°è¦ç¹ï¼
- ä½¿ç¨ Edit å·¥å ·ä¿®æ¹ CHANGELOG.md
- ä¿çç°æçæªåå¸å 容ï¼å¦ææï¼
- æ ¼å¼ï¼æ¯ä¸ªè¦ç¹ç®æ´æäºï¼ä½¿ç¨æäº¤æ¶æ¯æ£æ
- 妿æäº¤å
å« scopeï¼å¨æè¿°åæ·»å
scope: xxx - ç ´åæ§åæ´æ·»å
**Breaking**:åç¼ä»¥çªåºæ¾ç¤º
- åç¨æ·å±ç¤ºæè¦ï¼
æ¾ç¤ºæ·»å å° CHANGELOG çå 容æè¦ï¼
åæäº X 个æäº¤ï¼èª v{version} 以æ¥ï¼ï¼
- 3 个 Addedï¼æ°åè½ï¼
- 2 个 Changedï¼å
æ¬ 1 ä¸ªç ´åæ§åæ´ï¼
- 1 个 Fixedï¼Bug ä¿®å¤ï¼
æ¥éª¤ 2: åææªåå¸åæ´
è¯»åæ´æ°åç CHANGELOG.md å¹¶æ£æ¥ [Unreleased] é¨åï¼å¯¹åæ´è¿è¡åç±»ï¼
- MAJOR (X.0.0): å å«ç ´åæ§åæ´ï¼éè¦ä¸»çæ¬å级
- MINOR (x.Y.0): æ·»å äºæ°åè½
- PATCH (x.y.Z): ä» æ Bug ä¿®å¤
çæ¬å³çç©éµï¼
åå¨ç ´åæ§åæ´ â MAJOR
ææ°åè½ï¼æ ç ´åæ§ï¼ â MINOR
ä»
Bug ä¿®å¤ â PATCH
æ¥éª¤ 3: ç¡®å®æ°çæ¬å·
- ä» git æ ç¾è·åå½åçæ¬ï¼
git describe --tags --abbrev=0 - è§£æçæ¬å·ï¼MAJOR.MINOR.PATCHï¼
- æ ¹æ®åç±»çåæ´åºç¨çæ¬å级
- åç¨æ·å±ç¤ºå³ç并请æ±ç¡®è®¤
示ä¾å±ç¤ºï¼
å½åçæ¬ï¼1.2.3
æªåå¸åæ´ï¼
- Breaking: ç ´åæ§åæ´è¯´æ
- Added: æ°åè½æè¿°
- Fixed: Bug ä¿®å¤è¯´æ
æ¨èçæ¬ï¼2.0.0ï¼æ£æµå°ç ´åæ§åæ´ï¼
确认ï¼(yes/no)
æ¥éª¤ 4: æ´æ° CHANGELOG.md
- å°
## [Unreleased]æ¿æ¢ä¸º## [X.Y.Z] - YYYY-MM-DD - å¨åºé¨æ·»å çæ¬é¾æ¥ï¼æ ¹æ®å¹³å°ï¼ï¼
GitHubï¼
[X.Y.Z]: https://github.com/owner/repo/compare/vA.B.C...vX.Y.Z
GitLabï¼
[X.Y.Z]: https://gitlab.com/owner/repo/-/compare/vA.B.C...vX.Y.Z
GitLab èªæç®¡ï¼
[X.Y.Z]: https://gitlab.example.com/owner/repo/-/compare/vA.B.C...vX.Y.Z
- æäº¤ï¼
git commit -m "chore: release vX.Y.Z"
æ¥éª¤ 5: å建并æ¨éæ ç¾
git tag -a vX.Y.Z -m "Release vX.Y.Z"
git push origin main
git push origin vX.Y.Z
æ¥éª¤ 6: å建 Release
GitHub Release
ä½¿ç¨ gh release create åå»ºæ ¼å¼åçåå¸è¯´æï¼
gh release create vX.Y.Z \
--title "vX.Y.Z" \
--notes "## What's Changed
### Added
- scope: feature æ°åè½æè¿° 1
- æ°åè½æè¿° 2
### Fixed
- scope: fix Bug ä¿®å¤æè¿°
### Changed
- å
¶ä»åæ´æè¿°
**Full Changelog**: https://github.com/owner/repo/compare/vA.B.C...vX.Y.Z"
Release Notes æ ¼å¼è§èï¼
- 使ç¨è±ææ é¢
## What's Changed - 使ç¨
### Addedã### Fixedã### Changedåç±» - æ¯ä¸ªæ¡ç®ä½¿ç¨
-å¼å¤´ï¼ç®æ´æäº - 妿æäº¤å
å« scopeï¼å¨æè¿°åæ·»å
scope: xxx - ç ´åæ§åæ´ä½¿ç¨
**Breaking**:åç¼ - 龿¥ææ¬ä½¿ç¨
**Full Changelog**: - 妿æä¸ªå类为空ï¼åçç¥è¯¥åç±»
- ä» CHANGELOG.md 䏿å对åºçæ¬ç
AddedãFixedãChangedå 容
éè¦æç¤ºï¼å¦æ gh å½ä»¤å 认è¯å¤±è´¥ï¼æä¾ç¨æ·ï¼
- å¨ GitHub Web UI æå¨å建åå¸ç龿¥
- æ ¼å¼åçåå¸è¯´æå 容ä¾å¤å¶ç²è´´
GitLab Release
ä½¿ç¨ glab release create åå»ºæ ¼å¼åçåå¸è¯´æï¼
glab release create vX.Y.Z \
--name "vX.Y.Z" \
--notes "## What's Changed
### Added
- scope: feature æ°åè½æè¿° 1
- æ°åè½æè¿° 2
### Fixed
- scope: fix Bug ä¿®å¤æè¿°
### Changed
- å
¶ä»åæ´æè¿°
**Full Changelog**: https://gitlab.com/owner/repo/-/compare/vA.B.C...vX.Y.Z"
Release Notes æ ¼å¼è§èï¼ä¸ GitHub Release ç¸åï¼ä½¿ç¨ç»ä¸ç ## What's Changed æ ¼å¼
éè¦æç¤ºï¼å¦æ glab å½ä»¤å 认è¯å¤±è´¥ï¼æä¾ç¨æ·ï¼
- å¨ GitLab Web UI æå¨å建åå¸ç龿¥
- æ ¼å¼åçåå¸è¯´æå 容ä¾å¤å¶ç²è´´
GitLab èªæç®¡ï¼éè¦å é ç½® CLI ç主æºå°åï¼
glab config set host gitlab.example.com
é误å¤ç
- 䏿¯æç Git å¹³å°ï¼éç¥ç¨æ·æ¤æè½ä» æ¯æ GitHub å GitLabï¼è¯¢é®æ¯å¦ä» æ§è¡ git tag/push
- æ²¡ææªåå¸åæ´ï¼éç¥ç¨æ·å¹¶è¯¢é®æ¯å¦ç»§ç»
- Git å·¥ä½åºä¸å¹²åï¼ä¸æ¢å¹¶è¦æ±ç¨æ·å æäº¤/æååæ´
- 认è¯å¤±è´¥ï¼æä¾ Web UI å¤éæ¹æ¡
- æ¨éå²çªï¼æç¤ºç¨æ·å pull/rebase åéè¯
- æªé ç½®è¿ç¨ä»åºï¼ä¸æ¢å¹¶è¦æ±ç¨æ·å é ç½®è¿ç¨ä»åº
CHANGELOG æ ¼å¼
ææä½¿ç¨ Keep a Changelog æ ¼å¼ï¼
## [Unreleased]
### Added
- scope: feature æ°åè½æè¿°
### Changed
- **Breaking**: ä¸å
¼å®¹çåæ´
### Fixed
- scope: fix Bug ä¿®å¤æè¿°
## [1.0.0] - YYYY-MM-DD
...
Release Notes æ ¼å¼è§è
å建 Release æ¶ï¼å¿ 须使ç¨ä»¥ä¸ç»ä¸çæ ¼å¼æ¨¡æ¿ï¼ä»¥ç¡®ä¿ææçæ¬çä¸è´æ§ï¼
## What's Changed
### Added
- scope: feature æ°åè½æè¿° 1
- æ°åè½æè¿° 2
### Fixed
- scope: fix Bug ä¿®å¤æè¿°
### Changed
- å
¶ä»åæ´æè¿°ï¼éæãæ§è½ä¼åçï¼
- **Breaking**: ç ´åæ§åæ´è¯´æï¼å¦æï¼
**Full Changelog**: https://github.com/owner/repo/compare/vA.B.C...vX.Y.Z
æ ¼å¼è¦æ±ï¼
- æ é¢åºå®ï¼ä½¿ç¨
## What's Changedï¼è±æï¼ä¿æåå²çæ¬ä¸è´æ§ï¼ - åç±»æ åï¼
### Addedï¼æ°åè½### Fixedï¼Bug ä¿®å¤### Changedï¼å ¶ä»åæ´ï¼éæãæ§è½ä¼åãææ¡£çï¼
- scope æ¾ç¤ºï¼å¦ææäº¤å
å« scopeï¼å¨æè¿°åæ·»å
scope: xxx - ç ´åæ§åæ´ï¼å¨ Changed ä¸ä½¿ç¨
**Breaking**:åç¼çªåºæ¾ç¤º - 龿¥ææ¬ï¼ä½¿ç¨
**Full Changelog**:ï¼è±æï¼ - 空åç±»çç¥ï¼å¦ææä¸ªå类没æå 容ï¼åçç¥è¯¥åç±»
- å å®¹æ¥æºï¼ä» CHANGELOG.md 䏿å对åºçæ¬çå 容
ç¤ºä¾ 1 – ä» ææ°åè½ï¼
## What's Changed
### Added
- scope: feature æ¯ææ°çéªè¯è§å
- æ°å¢é
ç½®é¡¹æ¯æèªå®ä¹è¡ä¸º
**Full Changelog**: https://github.com/owner/repo/compare/v1.0.14...v1.0.15
ç¤ºä¾ 2 – å¤å类混åï¼
## What's Changed
### Added
- scope: feature æ°å¢ trim é
ç½®æ¯æ
- æ°å¢å½ååæ°æ¯æ
### Fixed
- ä¿®å¤æ°æ®å¤çæ¶ç空å¼é®é¢
### Changed
- CI: ä¼åæµè¯è¿è¡çç¥
**Full Changelog**: https://github.com/owner/repo/compare/v1.0.13...v1.0.14
ç¤ºä¾ 3 – ä» Bug ä¿®å¤ï¼
## What's Changed
### Fixed
- scope: fix ä¿®å¤åµå¥å¯¹è±¡çéªè¯é®é¢
**Full Changelog**: https://github.com/owner/repo/compare/v1.0.12...v1.0.13
ä» CHANGELOG æåå 容æ¶ï¼
- ä¿ç CHANGELOG ä¸çåå§æè¿°
- ä¿æåç±»ç»æï¼Added/Fixed/Changedï¼
- ä¿ç scope åç¼ï¼å¦ææï¼
- ç§»é¤æ¥æåçæ¬å·ï¼è¿äºå¨ Release æ é¢ä¸å·²æï¼
- ç¡®ä¿ Full Changelog 龿¥æ£ç¡®
å¹³å° CLI å·¥å ·
GitHub
- éè¦å®è£
ghCLI å·¥å · - GitHub token éè¦æ
repoåworkflowæé - å®è£ ï¼https://cli.github.com/
GitLab
- éè¦å®è£
glabCLI å·¥å · - GitLab token éè¦æ
apiåwrite_repositoryæé - å®è£ ï¼https://glab.readthedocs.io/
Conventional Commits æ¯æ
æ¤æè½åºäº Conventional Commits è§èè§£ææäº¤ä¿¡æ¯ï¼
| ç±»å | åç±» | 说æ |
|---|---|---|
feat: |
Added | æ°åè½ |
fix: |
Fixed | Bug ä¿®å¤ |
break: / BREAKING CHANGE: |
Changed | ç ´åæ§åæ´ |
refactor: |
Changed | 代ç éæ |
perf: |
Changed | æ§è½ä¼å |
chore: |
Changed | æå»º/å·¥å ·é¾æ´æ° |
docs: |
Changed | ææ¡£æ´æ° |
test: |
Changed | æµè¯ç¸å ³ |
style: |
Changed | 代ç 飿 ¼ï¼ä¸å½±ååè½ï¼ |
Scope æ¯æï¼
- 妿æäº¤ä¿¡æ¯å
å« scopeï¼å¦
feat(api): æ·»å æ°æ¥å£ï¼ï¼ä¼å¨æè¿°ä¸æ¾ç¤ºä¸ºscope: api æ·»å æ°æ¥å£ - Scope æ ¼å¼ï¼
type(scope): descriptionætype!: descriptionï¼ç ´åæ§åæ´ï¼
使ç¨ç¤ºä¾
- å叿°çæ¬ï¼ç¨æ·è¯´”å叿°ç欔æ”å建 release”
- çæ¬å级ï¼ç¨æ·æå°çæ¬å·æåæææ ç¾
- 宿éè¦åè½ï¼ç¨æ·æ·»å äºéè¦åè½æä¿®å¤äºå¤ä¸ª Bug å
- 宿åå¸ï¼æé¢å®æ¶é´åå¸çæ¬ï¼å¦æ¯å¨ãæ¯æï¼
注æäºé¡¹
- ç¡®ä¿ææè¦åå¸çæ´æ¹å·²æäº¤å¹¶æ¨éå°è¿ç¨
- CHANGELOG.md åºåå¨äºä»åºæ ¹ç®å½
- GitHub: éè¦å®è£
ghCLI å·¥å ·ä»¥å建 GitHub Release - GitLab: éè¦å®è£
glabCLI å·¥å ·ä»¥å建 GitLab Release - èªæç®¡ GitLab å®ä¾éè¦é¢å¤é
ç½®
glabç host åæ° - æäº¤æ¶æ¯å»ºè®®ä½¿ç¨ Conventional Commits æ ¼å¼ä»¥ä¾¿èªå¨åç±»