很久没有写文章了,最近开始学习团队开发,正好来总结一下 Git 在团队协作中的用法。
当你一个人使用 Git 时,Git 只是一个版本管理工具,帮你保存和回退代码。
但当你进入团队协作,Git 就变成了沟通与协作的重要桥梁,
它帮我们处理 代码同步、分支协作、合并、冲突,是团队开发必不可少的工具。
这篇文章不以堆砌命令为目的 ,重点是讲清楚在团队协作中,Git 的实际使用方式与流程。
💡 推荐使用 VSCode + Git 插件,有可视化界面,操作更直观。
ℹ 关于主分支:有时叫 main ,有时叫 master,只是因为 Git 的默认分支名发生过调整,功能是一样的,遇到不同项目时注意区分即可。
Fork 仓库与远程仓库的概念
在团队协作中,通常会有一个远程仓库 ,大家通过这个仓库共享代码。
而每个人的电脑上都有一个本地仓库,用来开发和提交。
Fork 和 Clone 有什么区别?
操作 | 作用 | 场景 |
---|---|---|
Clone | 直接复制项目仓库到本地 | 团队内部协作,参与开发 |
Fork | 在 GitHub 上复制出属于自己的远程仓库,再 Clone 到本地 | 开源项目、无权限时贡献代码 |
一句话总结:
➡ Clone 是项目"参与者"
➡ Fork 是项目"旁观者"
⬇️ 克隆 Fork 仓库到本地
1️⃣ 在你的 Fork 仓库页面,点击 Code 按钮,复制 HTTPS 或 SSH 地址。
2️⃣ 克隆到本地:
bash
# 使用 SSH
git clone git@github.com:你的用户名/仓库名.git
# 或使用 HTTPS
git clone https://github.com/你的用户名/仓库名.git
# 进入项目目录
cd 仓库名
3️⃣ 设置上游仓库(即原始仓库):
bash
# 查看当前远程仓库
git remote -v
# 添加上游仓库(upstream)
git remote add upstream https://github.com/原作者/仓库名.git
# 确认是否添加成功
git remote -v
获取上游仓库最新代码
保持同步,避免冲突是协作的基础。
bash
# 拉取上游仓库最新更新
git fetch upstream
# 切换到主分支(根据项目实际情况是 main 或 master)
git switch main
# 或
git switch master
# 合并上游的主分支更新到本地主分支
git merge upstream/main
# 或
git merge upstream/master
# 推送到自己的 fork,保持同步
git push origin main
创建新分支进行开发
分支就像是从主干上长出来的一根枝条,
你可以在上面自由开发,完成后再合并回主分支,避免干扰。
分支类型 | 命名规范 | 用途 |
---|---|---|
主分支 | main / master | 稳定版本,随时可以部署 |
功能分支 | feature/xxx | 开发新功能 |
修复分支 | bugfix/xxx 或 hotfix/xxx | 修复 bug |
临时开发分支 | dev | 多人协作开发(可选) |
分支相关命令
bash
# 查看当前分支
git branch
# 查看所有分支(包括远程)
git branch -a
# 基于主分支创建新分支
git switch main
git pull
git checkout -b feature/你的功能描述
提交你的代码
提交不仅是保存代码,更是团队沟通的重要工具。
原则:
- 小步提交,一件事一提交
- 清晰的提交信息,推荐使用规范前缀(如 Conventional Commits)
常用前缀示例:
makefile
feat: 添加新功能
fix: 修复问题
docs: 更新文档
refactor: 重构代码
提交命令示例:
bash
# 查看修改状态
git status
# 查看修改内容
git diff
# 添加修改到暂存区
git add .
# 提交代码
git commit -m "feat: 添加用户登录功能"
# 推送到你的 Fork 仓库的功能分支
git push origin feature/你的功能描述
保持代码同步,避免冲突
在开发过程中,尤其是准备提 PR 之前,建议保持分支与上游仓库同步。
两种常用同步方式:
方式 | 是否产生合并记录 | 适用场景 |
---|---|---|
git merge |
✅ 有合并记录 | 日常开发中同步 |
git rebase |
❌ 不产生合并记录,历史更清晰 | 提交 PR 前整理历史 |
示例命令:
bash
# 获取上游更新
git fetch upstream
git switch main
git merge upstream/main
git push origin main
# 合并主分支到你的功能分支
git switch feature/你的功能描述
git merge main
简要示意(合并 vs 变基)
- Merge 会产生合并记录:
bash
A---B---C ← upstream/main
\
D---E---F ← feature 分支
\
M ← 合并提交(Merge Commit)
- Rebase 会整理历史,不产生合并提交:
bash
A---B---C---D'---E'---F' ← rebase 后的 feature 分支
处理合并冲突
如果在合并或变基过程中发生冲突,Git 会在文件中标记冲突部分:
bash
<<<<<<< HEAD
你的修改
=======
上游的修改
>>>>>>> main
手动修改冲突后,继续提交即可:
bash
git add 冲突文件
git commit -m "fix: 解决合并冲突"
创建 Pull Request(PR)
1️⃣ 确保功能分支的代码已提交并推送:
bash
git push origin feature/你的功能描述
2️⃣ 在 GitHub 的 Fork 仓库页面,点击 "Compare & pull request",填写信息提交。
AI写的 PR 模板:
markdown
## 修改内容
- 添加了用户登录功能
- 修复了密码验证的 bug
- 更新了相关文档
## 测试情况
- [ ] 单元测试通过
- [ ] 功能测试通过
- [ ] 代码审查完成
## 关联 Issue
Closes #123
OK,这就是所有内容啦! 如果你觉得这篇文章有帮助,或者有任何建议和指正,欢迎留言!
谢谢你的阅读!