看懂 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(合并)

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

相关推荐
高调的涵涵1 天前
删了1.2GB,.git仍是1.2GB
git
程序员沉梦听雨1 天前
【Git】git-submodule子模块管理
git
全栈陈序员2 天前
Git】从入门到精通(八)—— git log:查看提交历史
大数据·git·elasticsearch
7177772 天前
Git自建用什么工具比较好:Gitea、Forgejo、GitLab CE与Gitee的选型对比
git·gitlab·gitea
lsc_blog3 天前
年底还在招的岗位,先确认缺口和到岗要求
git·缓存·ci/cd·职场和发展·github
全栈陈序员3 天前
【Git】从入门到精通(十一)—— git reset 三种模式详解
git·elasticsearch
全栈陈序员3 天前
【Git】从入门到精通(十)—— 撤销与恢复:git checkout与git restore
运维·网络·数据库·git
全栈陈序员4 天前
【Git】从入门到精通(五)—— git add:将文件加入暂存区
大数据·git·elasticsearch
全栈陈序员4 天前
【Git】从入门到精通(七)—— git status:查看仓库状态
大数据·git·elasticsearch
莫晓燚4 天前
Ansible 13 个常用模块---企业实战
git·github