From 898b52edcb47bcb3e9d6106e74ca73e74ea01e70 Mon Sep 17 00:00:00 2001 From: sillylaird Date: Thu, 3 Sep 2026 00:33:59 +0000 Subject: import live www.sillylaird.ca webroot --- .../git-workflow/references/advanced-usage.md | 393 +++++++++++++++++++++ 1 file changed, 393 insertions(+) create mode 100644 .agents/skills/git-workflow/references/advanced-usage.md (limited to '.agents/skills/git-workflow/references/advanced-usage.md') 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 -- # 提交历史 +git log -p -- # 详细内容 +git blame # 每行修改人 +``` + +### 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 +... +``` -- cgit v1.2.3