git开发流程
🚀 Git 高级用法完整手册(软件开发实战版)
适用于:日常开发 / 团队协作 / PR流程 / 代码管理 核心目标:历史清晰 + 协作顺畅 + 可回溯 + 可控风险
📌 1. 分支模型(推荐规范)
常见分支
| 分支 | 作用 |
|---|---|
| main | 可发布代码(稳定) |
| develop | 日常集成 |
| feature/xxx | 功能开发 |
| bugfix/xxx | 普通修复 |
| hotfix/xxx | 紧急修复 |
| release/xxx | 发版准备 |
分支关系图
gitGraph
commit id: "init"
commit id: "main-1"
commit id: "main-2"
branch feature/login
checkout feature/login
commit id: "feat-1"
commit id: "feat-2"
checkout main
commit id: "main-3"
📌 2. 标准开发流程(最重要)
flowchart TD
A[切 main] --> B[pull 最新代码]
B --> C[新建 feature 分支]
C --> D[开发]
D --> E[commit]
E --> F{main 有更新?}
F -- 否 --> G[push]
G --> H[PR]
H --> I[Review]
I --> J[合并 main]
F -- 是 --> K[rebase main]
K --> L{冲突?}
L -- 否 --> G
L -- 是 --> M[解决冲突]
M --> K
📌 3. 常用命令模板
新建功能分支
git checkout main
git pull origin main
git checkout -b feature/login
提交代码
git add .
git commit -m "feat: add login"
推送远程
git push -u origin feature/login
📌 4. rebase(核心技能)
为什么用 rebase?
👉 保持提交历史“线性、干净”
使用方式
git checkout main
git pull origin main
git checkout feature/login
git rebase main
冲突处理
# 修改冲突文件
git add .
git rebase --continue
放弃:
git rebase --abort
rebase 流程图
flowchart TD
A[rebase main] --> B{冲突?}
B -- 否 --> C[完成]
B -- 是 --> D[修改冲突]
D --> E[git add]
E --> F[continue]
F --> B
📌 5. rebase -i(整理提交)
git rebase -i HEAD~3
常用操作
| 指令 | 含义 |
|---|---|
| pick | 保留 |
| squash | 合并 |
| reword | 改提交信息 |
| drop | 删除 |
提交流程图
flowchart TD
A[多个杂乱 commit] --> B[rebase -i]
B --> C[整理历史]
C --> D[清晰提交]
📌 6. push 策略
普通 push
git push
rebase 后 push
git push --force-with-lease
⚠️ 永远优先:
--force-with-lease
而不是:
--force
📌 7. stash(临时保存)
git stash
git stash pop
查看:
git stash list
📌 8. cherry-pick(挑提交)
git cherry-pick <commit_id>
使用场景
- 把某个修复带到 hotfix
- 不想 merge 整个分支
流程图
flowchart LR
A[某个 commit] --> B[cherry-pick]
B --> C[另一个分支]
📌 9. reset vs revert
reset(改历史,本地用)
git reset --soft HEAD~1
git reset --mixed HEAD~1
git reset --hard HEAD~1
revert(安全撤销,团队用)
git revert <commit_id>
对比
| 命令 | 是否改历史 | 是否安全 |
|---|---|---|
| reset | 是 | ❌ |
| revert | 否 | ✅ |
📌 10. reflog(后悔药)
git reflog
git reset --hard <id>
👉 可以恢复:
- 被 reset 的提交
- 丢失的 commit
- 错误 rebase
📌 11. bisect(二分定位 bug)
git bisect start
git bisect bad
git bisect good <commit>
测试后:
git bisect good
git bisect bad
结束:
git bisect reset
📌 12. 查看历史
git log --oneline --graph --decorate --all
查看文件历史:
git log -- file.c
查看某次提交:
git show <commit_id>
📌 13. blame(查是谁改的)
git blame file.c
📌 14. fetch vs pull
推荐流程
git fetch origin
git rebase origin/main
对比
| 命令 | 行为 |
|---|---|
| pull | fetch + merge |
| fetch | 只下载 |
📌 15. hotfix 流程
flowchart TD
A[main] --> B[hotfix 分支]
B --> C[修复]
C --> D[提交]
D --> E[PR]
E --> F[合并 main]
📌 16. 完整开发节奏
flowchart LR
A[main] --> B[feature]
B --> C[开发]
C --> D[commit]
D --> E[rebase]
E --> F[整理历史]
F --> G[push]