摘要:通过A和B的故事,轻松搞懂Git团队协作开发 —— 分支、合并、冲突解决一网打尽。
引言:故事的开始
想象这样一个场景:A和B是两位程序员,他们要合作开发一个网站。A负责做首页,B负责做用户登录功能。如果两个人同时修改同一份代码,岂不是要乱套?
这时 Git 就派上用场了!它就像一个超级管家,帮你管理代码的版本,让多人协作井然有序。
一、故事背景:项目启动
公司接了一个网站项目,技术主管创建了一个 Git 仓库,作为团队共享的代码中心。
# 主管初始化远程仓库后,A和B分别克隆到本地
git clone https://github.com/company/website.git
cd website
这个仓库就像一个公共储物柜,所有人的代码都存在这里,每个人都可以拿一份到自己家里(本地)修改。
二、分支管理:各自开干
为了避免互相干扰,A和B各自创建自己的分支(branch)。分支就像是从主干上分出来的小路,每个人走自己的路,互不影响。
# A 创建自己的分支
git checkout -b feature/homepage
# B 创建自己的分支
git checkout -b feature/login
形象比喻:分支就像是平行的时空,A在自己的时空中做首页,B在自己的时空中做登录,两人互不干扰。
三、日常开发:提交与同步
A 的工作流程
A 在自己的分支上写代码,写完一部分就提交(commit)一次。提交就像是给代码拍个快照,记录这一刻的状态。
# A 写完首页HTML
git add index.html # 把修改放到暂存区(购物车)
git commit -m "完成首页HTML结构" # 提交到本地仓库(结账)
git push origin feature/homepage # 推送到远程仓库(发货)
购物比喻:
git add:把商品放进购物车git commit:在收银台结账git push:把商品寄回家(远程仓库)
B 的工作流程
B 也在自己的分支上忙碌着:
# B 写完登录页面
git add login.html
git commit -m "完成登录页面"
git push origin feature/login
四、合并代码:殊途同归
当 A 和 B 都完成各自的功能后,需要把代码合并到主分支(main/master)上。这就像两条小溪汇入同一条大河。
第一步:切换到主分支
git checkout main
git pull origin main # 先拉取最新的主分支代码
第二步:合并 A 的分支
git merge feature/homepage
git push origin main
第三步:合并 B 的分支
git merge feature/login
git push origin main
注意:合并前一定要 git pull,确保本地是最新的,避免冲突。
五、冲突解决:意见不合时怎么办?
假设 A 和 B 都修改了同一个文件(比如 index.html 的标题),合并时就会产生冲突(conflict)。
git merge feature/login
# 自动合并失败,出现冲突
Auto-merging index.html
CONFLICT (content): Merge conflict in index.html
打开 index.html,你会看到:
<<<<<<< HEAD
<title>A的网站</title>
=======
<title>B的登录系统</title>
>>>>>>> feature/login
解决冲突:就像两个人吵架,需要有人来调解。你作为调解员,决定保留哪个或者合并:
<title>A的网站 - B的登录系统</title>
然后:
git add index.html # 标记冲突已解决
git commit -m "解决标题冲突"
git push origin main
六、常用命令速查表
| 命令 | 作用 | 形象比喻 |
|---|---|---|
git clone |
克隆远程仓库 | 把储物柜搬回家 |
git checkout -b 分支名 |
创建并切换分支 | 走自己的小路 |
git add |
添加到暂存区 | 商品放入购物车 |
git commit -m |
提交到本地仓库 | 收银台结账 |
git push |
推送到远程仓库 | 把商品寄回家 |
git pull |
拉取远程最新代码 | 收最新的快递 |
git merge |
合并分支 | 两条溪流汇合 |
git status |
查看当前状态 | 看购物车里有什么 |
git log |
查看提交历史 | 看购物小票记录 |
七、完整协作流程图
远程仓库 (origin)
↕ push/pull
┌────┴────┐
│ main │ ← 主分支(生产环境)
└────┬────┘
│ merge
┌────┴─────────┐
│ │
┌───┴────┐ ┌────┴───┐
│ A分支 │ │ B分支 │
│首页功能 │ │登录功能│
└────────┘ └────────┘
八、团队协作的最佳实践
1. 频繁提交,小步快跑
不要一次性写完所有代码才提交,每完成一个小功能就提交一次。
2. 提交信息要清晰
- ❌
git commit -m "修改了" - ✅
git commit -m "完成用户登录表单验证"
3. 合并前先拉取
git pull origin main # 养成好习惯
4. 及时删除已合并的分支
git branch -d feature/homepage # 删除本地分支
git push origin --delete feature/homepage # 删除远程分支
九、总结
通过 A 和 B 的故事,我们学会了 Git 团队协作的核心流程:
- 克隆仓库 → 各自拿一份代码
- 创建分支 → 各走各的路
- 开发提交 → 记录每一步
- 合并代码 → 殊途同归
- 解决冲突 → 化解分歧
核心思想:Git 让多人协作变得井然有序,就像一个高效的团队管家。掌握了分支管理,你就能轻松应对任何团队协作场景!
小贴士:协作开发中,沟通比技术更重要。A和B在合并前先商量一下,能避免很多冲突哦!
