diff options
| author | sillylaird <sillyfanboy@gmail.com> | 2026-09-03 00:33:59 +0000 |
|---|---|---|
| committer | sillylaird <sillyfanboy@gmail.com> | 2026-09-03 00:33:59 +0000 |
| commit | 898b52edcb47bcb3e9d6106e74ca73e74ea01e70 (patch) | |
| tree | 85c6ee5ad58b860144551184d4cf86b560c62b91 /.agents/skills/git-workflow/references/advanced-usage.md | |
| download | www-898b52edcb47bcb3e9d6106e74ca73e74ea01e70.tar.gz www-898b52edcb47bcb3e9d6106e74ca73e74ea01e70.zip | |
Diffstat (limited to '.agents/skills/git-workflow/references/advanced-usage.md')
| -rw-r--r-- | .agents/skills/git-workflow/references/advanced-usage.md | 393 |
1 files changed, 393 insertions, 0 deletions
diff --git a/.agents/skills/git-workflow/references/advanced-usage.md b/.agents/skills/git-workflow/references/advanced-usage.md new file mode 100644 index 0000000..9e92251 --- /dev/null +++ b/.agents/skills/git-workflow/references/advanced-usage.md @@ -0,0 +1,393 @@ +# Git 高级用法
+
+## 标签管理
+
+### 版本号规范
+
+采用 **语义化版本**(Semantic Versioning):
+
+```
+主版本号.次版本号.修订号[-预发布标识]
+MAJOR.MINOR.PATCH[-PRERELEASE]
+```
+
+| 版本变化 | 说明 | 示例 |
+| :------- | :----------------- | :---------------- |
+| 主版本号 | 不兼容的 API 修改 | `v1.0.0 → v2.0.0` |
+| 次版本号 | 向下兼容的功能新增 | `v1.0.0 → v1.1.0` |
+| 修订号 | 向下兼容的问题修正 | `v1.0.0 → v1.0.1` |
+
+### 预发布标识
+
+- `alpha` - 内测版本
+- `beta` - 公测版本
+- `rc` - 候选版本
+
+```
+v1.0.0-alpha.1 # 第一个内测版本
+v1.0.0-beta.1 # 第一个公测版本
+v1.0.0-rc.1 # 第一个候选版本
+v1.0.0 # 正式版本
+```
+
+### 标签操作
+
+#### 创建附注标签(推荐)
+
+```bash
+git tag -a v1.0.0 -m "release: v1.0.0 正式版本
+
+主要更新:
+- 新增用户管理模块
+- 新增支付功能
+- 优化查询性能"
+```
+
+#### 推送标签
+
+```bash
+# 推送单个标签
+git push origin v1.0.0
+
+# 推送所有标签
+git push origin --tags
+```
+
+#### 查看标签
+
+```bash
+git tag
+git tag -l "v1.*"
+git show v1.0.0
+```
+
+#### 删除标签
+
+```bash
+# 删除本地标签
+git tag -d v1.0.0
+
+# 删除远程标签
+git push origin :refs/tags/v1.0.0
+```
+
+## Git 性能优化
+
+### 大型仓库优化
+
+```bash
+# 浅克隆(只获取最近的提交)
+git clone --depth 1 https://github.com/repo/project.git
+
+# 部分克隆(按需获取)
+git clone --filter=blob:none https://github.com/repo/project.git
+
+# 稀疏检出(只检出需要的目录)
+git clone --filter=blob:none --sparse https://github.com/repo/project.git
+cd project
+git sparse-checkout init --cone
+git sparse-checkout set src/frontend
+```
+
+### 清理仓库
+
+```bash
+# 查看仓库大小
+git count-objects -vH
+
+# 清理无用对象
+git gc --aggressive --prune=now
+
+# 清理远程已删除的分支引用
+git remote prune origin
+
+# 清理本地已合并的分支
+git branch --merged master | grep -v "\\*\\|master\\|develop" | xargs -n 1 git branch -d
+```
+
+### 提升操作速度
+
+```bash
+# 启用文件系统缓存
+git config --global core.fscache true
+
+# 启用并行获取
+git config --global fetch.parallel 4
+
+# 启用未跟踪文件缓存
+git config --global core.untrackedCache true
+```
+
+## Git 安全规范
+
+### 敏感信息保护
+
+```bash
+# 检查历史提交中的敏感信息
+git log -p | grep -E "(password|secret|api_key)"
+
+# 从历史记录中删除敏感文件
+git filter-branch --force --index-filter \
+ 'git rm --cached --ignore-unmatch config/secrets.yml' \
+ --prune-empty --tag-name-filter cat -- --all
+
+# 使用 git-secrets 预防敏感信息提交
+git secrets --install
+git secrets --register-aws
+```
+
+### 签名验证
+
+```bash
+# 配置 GPG 签名
+git config --global user.signingkey YOUR_KEY_ID
+git config --global commit.gpgsign true
+
+# 创建签名提交
+git commit -S -m "feat: 签名提交"
+
+# 验证签名
+git log --show-signature
+```
+
+### 仓库权限控制
+
+| 规则 | master | develop | feature/* |
+| :--------------- | :----- | :------ | :-------- |
+| 禁止强制推送 | ✅ | ✅ | ❌ |
+| 禁止删除 | ✅ | ✅ | ❌ |
+| 必须 Code Review | ✅ | ✅ | ❌ |
+| 必须通过 CI | ✅ | ✅ | ❌ |
+| 必须签名提交 | ✅ | ❌ | ❌ |
+
+## 子模块管理
+
+### 添加子模块
+
+```bash
+git submodule add https://github.com/user/repo.git libs/repo
+
+# 克隆包含子模块的项目
+git clone --recurse-submodules https://github.com/user/project.git
+
+# 初始化已有项目的子模块
+git submodule init
+git submodule update
+```
+
+### 更新子模块
+
+```bash
+# 更新单个子模块
+cd libs/repo
+git pull origin main
+
+# 更新所有子模块
+git submodule update --remote
+
+# 提交子模块更新
+cd ..
+git add libs/repo
+git commit -m "chore: 更新子模块版本"
+```
+
+### 删除子模块
+
+```bash
+# 删除子模块条目
+git submodule deinit -f libs/repo
+
+# 删除 .git/modules 中的缓存
+rm -rf .git/modules/libs/repo
+
+# 删除子模块目录
+git rm -f libs/repo
+```
+
+## 常见问题解决
+
+### 1. 修改最后一次提交
+
+```bash
+# 修改提交内容(未推送)
+git add forgotten-file.ts
+git commit --amend --no-edit
+
+# 修改提交消息
+git commit --amend -m "新的提交消息"
+
+# 回滚最后一次提交,保留更改
+git reset --soft HEAD~1
+```
+
+### 2. 推送被拒绝
+
+```bash
+# 先拉取再推送
+git pull origin master
+git push origin master
+
+# 使用 rebase 保持历史清晰
+git pull --rebase origin master
+git push origin master
+```
+
+### 3. 回滚到之前版本
+
+```bash
+# 重置到指定提交(丢弃之后的提交)
+git reset --hard abc123
+
+# 创建反向提交(推荐,保留历史)
+git revert abc123
+```
+
+### 4. 恢复误删的分支
+
+```bash
+# 查看操作历史
+git reflog
+
+# 恢复分支
+git checkout -b feature/xxx def456
+```
+
+### 5. 合并多个提交
+
+```bash
+# 交互式 rebase(只能合并未推送的提交)
+git rebase -i HEAD~5
+
+# 在编辑器中将要合并的提交标记为 squash
+```
+
+### 6. 暂存当前工作
+
+```bash
+git stash save "工作进行中"
+git stash list
+git stash pop
+git stash apply stash@{0}
+```
+
+### 7. 查看文件修改历史
+
+```bash
+git log -- <file> # 提交历史
+git log -p -- <file> # 详细内容
+git blame <file> # 每行修改人
+```
+
+### 8. 处理大文件
+
+```bash
+# 使用 Git LFS
+git lfs install
+git lfs track "*.zip"
+git add .gitattributes
+```
+
+## 实用技巧
+
+### 配置别名
+
+```bash
+git config --global alias.co checkout
+git config --global alias.br branch
+git config --global alias.ci commit
+git config --global alias.st status
+git config --global alias.lg "log --graph --oneline --all"
+```
+
+### 美化日志
+
+```bash
+# 图形化历史
+git log --graph --oneline --all
+
+# 搜索提交消息
+git log --grep="用户管理"
+
+# 搜索代码变更
+git log -S"function_name"
+```
+
+### 快速操作
+
+```bash
+# 放弃所有未提交更改
+git reset --hard HEAD
+
+# 放弃某个文件更改
+git checkout -- filename
+
+# 删除未跟踪文件
+git clean -fd
+
+# 批量删除已合并分支
+git branch --merged master | grep -v "\* master" | xargs -n 1 git branch -d
+```
+
+### 安全操作
+
+```bash
+# 查看将要推送的内容
+git push --dry-run
+
+# 安全的强制推送
+git push --force-with-lease
+
+# 备份分支
+git branch backup-master master
+```
+
+### 查找问题提交
+
+```bash
+# 二分查找引入Bug的提交
+git bisect start
+git bisect bad # 标记当前有问题
+git bisect good v1.0.0 # 标记某版本是好的
+# Git会自动切换提交,测试后标记 good/bad
+git bisect reset # 结束查找
+```
+
+## CHANGELOG 管理
+
+### 自动生成 CHANGELOG
+
+使用 `conventional-changelog` 自动生成:
+
+```bash
+# 安装
+pnpm install -D conventional-changelog-cli
+
+# 生成 CHANGELOG
+npx conventional-changelog -p angular -i CHANGELOG.md -s
+```
+
+### CHANGELOG 格式
+
+```markdown
+# 更新日志
+
+## [1.2.0] - 2024-01-15
+
+### 新增
+- 新增用户导出功能 (#123)
+- 新增数据备份模块
+
+### 修复
+- 修复登录验证码不刷新问题 (#456)
+- 修复列表分页异常
+
+### 变更
+- 优化用户查询性能
+- 调整菜单权限校验逻辑
+
+### 移除
+- 移除废弃的API接口
+
+## [1.1.0] - 2024-01-01
+...
+```
|
