看懂 Git 团队协作全流程:分支、提交、PR、rebase 到底在干嘛

文章目录

看懂 Git 团队协作全流程:分支、提交、PR、rebase 到底在干嘛

第一次用 Git 协作时,最懵的不是记不住命令,而是搞不懂这一整套流程为什么要这样走。这篇文章不讲命令细节,只讲"地图"------用大白话把整个流程和核心概念讲清楚,先有全局,再学细节就顺了。

一、一句话总览

团队有一份共享的正式代码 (通常叫 main 或 develop 分支)。你做任何新东西,永远是三步:

从正式代码复制一份草稿 → 在草稿上改 → 申请把草稿合并回正式代码。

这三步对应的 Git 操作就是:建分支 → commit → 开 PR。

二、用"改合同"理解每个核心概念

想象团队共同维护一份正式合同:

概念 大白话 合同类比
仓库 Repository 项目的代码 + 历史记录 合同存放处
分支 Branch 一条独立的开发线 正式合同 vs 你的草稿副本
commit 提交 一次"存档" 在草稿上贴张便签,记录改了什么
push 推送 把本地改动传到云端 把草稿交给负责人
PR (Pull Request) 申请把分支合并回主干 申请"把我的草稿内容写进正式合同"
review 评审 别人审查你的改动 负责人审草稿
merge 合并 把分支合进主干 把草稿内容正式写进合同
rebase 变基 把你的提交"搬"到最新主干上 先拿最新版合同,再把自己的改动加上

核心就三件事:

  1. 分支 = 你的草稿,改它不影响别人。
  2. PR = 申请合并,让负责人先审查,别直接改正式代码。
  3. rebase = 同步最新,保证你的草稿基于最新的正式代码。

三、完整流程图(8 步)

复制代码
develop(团队的正式代码,大家共享)
   │
   ① clone:把仓库下载到你电脑
   │
   ② 建分支:从 develop 切出你自己的草稿  feat/你的功能
   │
   ③ 改代码:写功能、修 bug
   │
   ④ commit:存档,记录你的改动
   │
   ⑤ push:把草稿推到云端,别人才能看到
   │
   ⑥ 开 PR:申请"把我的草稿合并回 develop"
   │
   ⑦ 导师 review:提意见
   │     ├─ 你按意见改(rebase 同步最新、改标题描述)
   │     └─ 再 push,PR 自动更新
   │
   ⑧ 导师 approve → 合并进 develop → 完成 ✅

四、术语速查表(对照流程位置)

词 大白话 在流程哪一步
clone 下载仓库到本地 ①
branch 分支 你的草稿副本 ②
commit 存档 ④
push 把草稿传上云端 ⑤
PR 申请合并 ⑥
review 别人审查 ⑦
rebase 把草稿"搬"到最新正式代码上 ⑦(改的时候)
force push 草稿搬家后,强制用新版覆盖云端旧版 ⑦
merge 合并 把草稿写进正式代码 ⑧

五、最常问的几个问题

1. 为什么不能直接提交到 main/develop?

因为那是大家共用的正式代码。你直接改,改到一半提交了,别人拉下来就是坏的、半成品,还容易跟别人的改动打架。

放到分支上,坏也只坏你自己的草稿;通过 PR 让别人审查,确认没问题才合并进主干。分支是保护主干不被改坏的机制。

2. rebase 和 merge 到底啥区别?

  • merge(合并) :把两个分支"合在一起",产生一个 Merge branch ... 的合并提交,历史是分叉的。
  • rebase(变基) :把你的提交"搬"到另一个分支末尾,历史是一条直线,干净。

很多团队约定功能分支用 rebase 保持历史干净(git rebase develop),而不是 merge。

3. 为什么有时候要 force push(强推)?

  • 普通 push = 追加新提交,不能改已有历史。
  • force push = 覆盖,用你本地的历史覆盖远程。

rebase 会"改写历史"(你的提交位置变了),导致本地和远程对不上,普通 push 会被拒绝,这时就要 force push 覆盖。

注意 :force push 只该用在你自己的分支上;如果别人也在同一个分支上工作,强推会抹掉他们的提交。

六、总结

一句话记住整个协作流程:

建分支(草稿)→ commit(存档)→ push(交上去)→ PR(申请合并)→ review(审查)→ rebase 改(同步最新)→ merge(合并)

先有这张"地图",再去记命令,就顺了。命令忘了可以查,但流程搞懂了才不会迷路。

相关推荐
sunshine22 girl7 小时前
git tag-项目流程
git
imDwAaY20 小时前
6篇文章讲清楚Git:Git 远程协作:fetch、pull、push 到底有什么区别?(3/6)
git·后端
imDwAaY20 小时前
6篇文章讲清楚Git:Git 撤销与恢复:reset、revert、restore 应该怎么选?(4/6)
git
用户733096461230921 小时前
再也不怕手滑丢代码!给 git 高危操作加一层安全校验
git
广白21 小时前
Git Tag 实战:从出包追溯到版本发布
前端·git·面试
Winlifes6 天前
我给 Codex 做了一个 Git 面板:分支树、提交历史和工作区操作
git
郑州光合科技余经理7 天前
同城外卖小程序开发:下单成功后,后台导出能不能对上用户端状态
开发语言·前端·git·后端·uni-app·php·ai编程
我命由我123457 天前
Git 推送报错:error: src refspec main does not match any
运维·git·gitee·github·运维开发·学习方法·版本控制
Lcr3s7 天前
Git基础之(0):如何在Ubuntu(Linux)上安装git
git