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]
Created By MchWang. | 陕ICP备17021455号