🚀 快速安装
复制以下命令并运行,立即安装此 Skill:
npx @anthropic-ai/skills install supercent-io/skills-template/git-workflow
💡 提示:需要 Node.js 和 NPM
Git 工作流
何时使用此技能
- 创建有意义的提交消息
- 管理分支
- 合并代码
- 解决冲突
- 与团队协作
- Git 最佳实践
指示
步骤 1:分支管理
创建功能分支:
# 创建并切换到新分支
git checkout -b feature/feature-name
# 或者从特定提交创建
git checkout -b feature/feature-name <提交哈希>
命名约定:
feature/描述:新功能bugfix/描述:错误修复hotfix/描述:紧急修复refactor/描述:代码重构docs/描述:文档更新
步骤 2:进行更改
暂存更改:
# 暂存特定文件
git add file1.py file2.js
# 暂存所有更改
git add .
# 使用补丁模式暂存(交互式)
git add -p
检查状态:
# 查看更改内容
git status
# 查看详细差异
git diff
# 查看已暂存的差异
git diff --staged
步骤 3:提交
编写良好的提交消息:
git commit -m "type(scope): subject
详细描述更改内容和原因。
- 更改 1
- 更改 2
修复 #123"
提交类型:
feat:新功能fix:错误修复docs:文档style:格式调整,无代码更改refactor:代码重构test:添加测试chore:维护工作
示例:
git commit -m "feat(auth): 添加 JWT 认证
- 实现 JWT 令牌生成
- 添加令牌验证中间件
- 更新用户模型,添加刷新令牌
关闭 #42"
步骤 4:推送更改
# 推送到远程
git push origin feature/feature-name
# 强制推送(谨慎使用!)
git push origin feature/feature-name --force-with-lease
# 设置上游并推送
git push -u origin feature/feature-name
步骤 5:拉取和更新
# 拉取最新更改
git pull origin main
# 使用变基拉取(更清晰的历史)
git pull --rebase origin main
# 仅获取,不合并
git fetch origin
步骤 6:合并
合并功能分支:
# 切换到主分支
git checkout main
# 合并功能
git merge feature/feature-name
# 不使用快进合并(创建合并提交)
git merge --no-ff feature/feature-name
使用变基代替合并:
# 在功能分支上
git checkout feature/feature-name
# 变基到主分支
git rebase main
# 解决冲突后继续
git rebase --continue
# 中止变基
git rebase --abort
步骤 7:解决冲突
当冲突发生时:
# 查看冲突文件
git status
# 打开文件并解决冲突
# 查找标记:
<<<<< HEAD
当前分支代码
=======
传入分支代码
>>>>> feature-branch
# 解决后
git add <已解决文件>
git commit # 对于合并
git rebase --continue # 对于变基
步骤 8:清理
# 删除本地分支
git branch -d feature/feature-name
# 强制删除
git branch -D feature/feature-name
# 删除远程分支
git push origin --delete feature/feature-name
# 清理过时的引用
git fetch --prune
高级工作流
交互式变基
# 变基最近 3 次提交
git rebase -i HEAD~3
# 编辑器中的命令:
# pick: 使用提交
# reword: 修改提交消息
# edit: 修改提交内容
# squash: 与前一个提交合并
# fixup: 类似 squash,但丢弃消息
# drop: 移除提交
暂存更改
# 暂存当前更改
git stash
# 带消息暂存
git stash save "功能 X 的进行中工作"
# 列出所有暂存
git stash list
# 应用最近的暂存
git stash apply
# 应用并移除暂存
git stash pop
# 应用特定暂存
git stash apply stash@{2}
# 删除暂存
git stash drop stash@{0}
# 清除所有暂存
git stash clear
拣选提交
# 应用特定提交
git cherry-pick <提交哈希>
# 拣选多个提交
git cherry-pick <哈希1> <哈希2> <哈希3>
# 拣选但不提交
git cherry-pick -n <提交哈希>
二分查找(寻找错误)
# 开始二分查找
git bisect start
# 标记当前为坏
git bisect bad
# 标记已知好的提交
git bisect good <提交哈希>
# Git 会检出提交供测试
# 测试并标记每个:
git bisect good # 如果正常
git bisect bad # 如果损坏
# 找到后,重置
git bisect reset
示例
示例 1:功能开发工作流
# 1. 创建功能分支
git checkout main
git pull origin main
git checkout -b feature/user-profile
# 2. 进行更改
# ... 编辑文件 ...
# 3. 提交更改
git add src/profile/
git commit -m "feat(profile): 添加用户资料页面
- 创建资料组件
- 添加资料 API 端点
- 添加资料测试"
# 4. 保持与主分支同步
git fetch origin
git rebase origin/main
# 5. 推送到远程
git push origin feature/user-profile
# 6. 在 GitHub/GitLab 上创建拉取请求
# ... 审查和批准后 ...
# 7. 合并并清理
git checkout main
git pull origin main
git branch -d feature/user-profile
示例 2:热修复工作流
# 1. 从生产环境创建热修复分支
git checkout main
git pull origin main
git checkout -b hotfix/critical-bug
# 2. 修复错误
# ... 进行修复 ...
# 3. 提交
git add .
git commit -m "hotfix: 修复关键登录错误
修复认证绕过漏洞
修复 #999"
# 4. 立即推送并合并
git push origin hotfix/critical-bug
# 合并后:
# 5. 清理
git checkout main
git pull origin main
git branch -d hotfix/critical-bug
示例 3:协作工作流
# 1. 更新主分支
git checkout main
git pull origin main
# 2. 创建功能分支
git checkout -b feature/new-feature
# 3. 定期从主分支更新
git fetch origin
git rebase origin/main
# 4. 推送您的工作
git push origin feature/new-feature
# 5. 如果队友更改了您的分支
git pull origin feature/new-feature --rebase
# 6. 解决任何冲突
# ... 解决冲突 ...
git add .
git rebase --continue
# 7. 变基后强制推送
git push origin feature/new-feature --force-with-lease
最佳实践
- 频繁提交:小型、聚焦的提交
- 有意义的消息:解释做了什么和为什么
- 推送前先拉取:保持更新
- 提交前审查:检查您要提交的内容
- 使用分支:永远不要直接提交到主分支
- 保持历史整洁:对功能分支使用变基
- 推送前测试:在本地运行测试
- 使用描述性的分支名称:易于理解
- 删除已合并的分支:保持仓库整洁
- 使用 .gitignore:不提交生成的文件
常见模式
撤销最后一次提交(保留更改)
git reset --soft HEAD~1
撤销最后一次提交(丢弃更改)
git reset --hard HEAD~1
修改最后一次提交
# 更改提交消息
git commit --amend -m "新消息"
# 添加文件到最后一次提交
git add forgotten-file.txt
git commit --amend --no-edit
查看历史
# 详细日志
git log
# 每行显示一个提交
git log --oneline
# 带图形显示
git log --oneline --graph --all
# 最近 5 次提交
git log -5
# 按作者查看提交
git log --author="张三"
# 查看日期范围内的提交
git log --since="2 周前"
查找提交
# 搜索提交消息
git log --grep="关键词"
# 搜索代码更改
git log -S "function_name"
# 显示文件历史
git log --follow -- path/to/file
故障排除
意外提交到错误分支
# 1. 从当前状态创建正确分支
git branch feature/correct-branch
# 2. 重置当前分支
git reset --hard HEAD~1
# 3. 切换到正确分支
git checkout feature/correct-branch
需要撤销合并
# 如果尚未推送
git reset --hard HEAD~1
# 如果已经推送(创建还原提交)
git revert -m 1 <合并提交哈希>
恢复已删除的分支
# 查找丢失的提交
git reflog
# 从丢失的提交创建分支
git checkout -b recovered-branch <提交哈希>
同步复刻与上游
# 添加上游远程
git remote add upstream https://github.com/original/repo.git
# 获取上游
git fetch upstream
# 合并上游主分支
git checkout main
git merge upstream/main
# 推送到您的复刻
git push origin main
Git 配置
用户设置
git config --global user.name "您的姓名"
git config --global user.email "您的邮箱@example.com"
别名
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.unstage 'reset HEAD --'
git config --global alias.last 'log -1 HEAD'
git config --global alias.lg 'log --oneline --graph --all'
编辑器
git config --global core.editor "code --wait" # VS Code
git config --global core.editor "vim" # Vim
参考资料
📄 原始文档
完整文档(英文):
https://skills.sh/supercent-io/skills-template/git-workflow
💡 提示:点击上方链接查看 skills.sh 原始英文文档,方便对照翻译。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

评论(0)