Git 工作流助手 Skill
Git 分支管理、冲突解决、提交规范,提升团队协作效率。
核心功能
识别和解决冲突 |
| 提交规范 | Conventional Commits |
| 常见问题 | 撤销、回滚、恢复 |
使用方法
分支操作
创建并切换到新分支 feature/login
冲突解决
帮我解决 Git 合并冲突
提交建议
为这些改动生成符合规范的提交信息
常用命令速查
基础操作
bash
初始化
git init # 初始化仓库
git clone URL # 克隆仓库
配置
git config --global user.name Your Name
git config --global user.email email@example.com
状态查看
git status # 查看状态
git log --oneline # 简洁日志
git log --graph --oneline --all # 图形化日志
git diff # 查看改动
git show COMMIT_ID # 查看提交详情
分支管理
bash
查看分支
git branch # 本地分支
git branch -a # 所有分支
git branch -r # 远程分支
创建分支
git branch feature/login # 创建分支
git checkout -b feature/login # 创建并切换
git switch -c feature/login # 新语法
切换分支
git checkout feature/login # 切换分支
git switch feature/login # 新语法
合并分支
git merge feature/login # 合并分支
git merge --no-ff feature/login # 禁用快进
删除分支
git branch -d feature/login # 安全删除
git branch -D feature/login # 强制删除
git push origin --delete feature/login # 删除远程分支
远程操作
bash
查看远程
git remote -v # 查看远程仓库
git remote add origin URL # 添加远程
git remote set-url origin URL # 修改远程地址
拉取推送
git fetch origin # 获取更新
git pull origin main # 拉取并合并
git push origin main # 推送
git push -u origin feature/login # 推送并设置上游
同步远程
git remote prune origin # 清理无效引用
git fetch --all --prune # 获取并清理
暂存操作
bash
暂存工作区
git stash # 暂存当前修改
git stash save message # 带消息暂存
git stash list # 查看暂存列表
git stash pop # 恢复并删除
git stash apply # 恢复但不删除
git stash drop stash@{0} # 删除指定暂存
git stash clear # 清空暂存
提交规范
Conventional Commits
():
Type 类型
| Type | 描述 | 示例 |
|---|
| feat | 新功能 | feat(auth): 添加登录功能 |
| fix |
修复 bug | fix(api): 修复接口超时 |
| docs | 文档更新 | docs(readme): 更新安装说明 |
| style | 代码格式 | style: 格式化代码 |
| refactor | 重构 | refactor(utils): 优化工具函数 |
| perf | 性能优化 | perf(list): 优化列表渲染 |
| test | 测试 | test(auth): 添加登录测试 |
| chore | 构建/工具 | chore: 更新依赖 |
| ci | CI 配置 | ci: 添加 GitHub Actions |
| revert | 回滚 | revert: 回滚登录功能 |
提交示例
bash
功能
git commit -m feat(user): 添加用户注册功能
修复
git commit -m fix(payment): 修复支付金额计算错误
文档
git commit -m docs(api): 更新接口文档
重构
git commit -m refactor(auth): 重构认证逻辑
破坏性变更
git commit -m feat(api)!: 修改 API 响应格式
BREAKING CHANGE: 响应格式从 {code, data} 改为 {status, result}
工作流模式
Git Flow
bash
初始化
git flow init
功能开发
git flow feature start login
git flow feature finish login
发布
git flow release start v1.0.0
git flow release finish v1.0.0
热修复
git flow hotfix start fix-login-bug
git flow hotfix finish fix-login-bug
GitHub Flow
bash
1. 从 main 创建分支
git checkout -b feature/login main
2. 开发并提交
git add .
git commit -m feat: 添加登录功能
git push origin feature/login
3. 创建 Pull Request
4. Code Review
5. 合并到 main
git checkout main
git pull origin main
git merge feature/login
git push origin main
GitLab Flow
bash
环境分支:main -> staging -> production
1. 功能开发
git checkout -b feature/login main
git push origin feature/login
2. 合并到 main
git checkout main
git merge feature/login
3. 部署到 staging
git checkout staging
git merge main
git push origin staging
4. 部署到 production
git checkout production
git merge staging
git push origin production
冲突解决
识别冲突
bash
查看冲突文件
git status
冲突标记
<<<<<<< HEAD
当前分支内容
=======
合并分支内容
>>>>>>> feature/login
解决冲突
bash
1. 手动编辑冲突文件
2. 选择保留的内容
3. 删除冲突标记
4. 添加解决后的文件
git add .
5. 完成合并
git commit
冲突工具
bash
使用合并工具
git mergetool
使用 VS Code
git config --global merge.tool code
git config --global mergetool.code.cmd code --wait $MERGED
查看差异
git diff HEAD # 与 HEAD 比较
git diff --ours # 使用当前版本
git diff --theirs # 使用合并版本
常见问题解决
撤销操作
bash
撤销工作区修改
git checkout -- file.txt
git restore file.txt # 新语法
撤销暂存
git reset HEAD file.txt
git restore --staged file.txt # 新语法
撤销最近提交(保留修改)
git reset --soft HEAD~1
撤销最近提交(丢弃修改)
git reset --hard HEAD~1
修改最近提交信息
git commit --amend -m 新信息
回滚代码
bash
回滚指定提交
git revert COMMIT_ID
回滚多个提交
git revert COMMIT
ID1..COMMITID2
回滚但不提交
git revert --no-commit COMMIT_ID
恢复删除
bash
恢复删除的文件
git checkout COMMIT_ID -- file.txt
恢复删除的提交
git reflog # 查找提交
git reset --hard COMMIT_ID # 恢复
恢复删除的分支
git reflog # 找到分支最后的提交
git checkout -b branch
name COMMITID
清理仓库
bash
清理未跟踪文件
git clean -n # 预览
git clean -f # 删除文件
git clean -fd # 删除文件和目录
清理历史
git filter-branch --force --index-filter \
git rm --cached --ignore-unmatch path/to/file \
--prune-empty --tag-name-filter cat -- --all
使用 BFG(更快)
bfg --delete-folders folder_name
git reflog expire --expire=now --all
git gc --prune=now --aggressive
别名配置
bash
添加到 ~/.gitconfig
[alias]
co = checkout
br = branch
ci = commit
st = status
unstage = reset HEAD --
last = log -1 HEAD
visual = log --graph --oneline --all
amend = commit --amend --no-edit
undo = reset --soft HEAD~1
wip = !git add -A &&