Git 团队协作总结 —— 不只是版本控制的工具

很久没有写文章了,最近开始学习团队开发,正好来总结一下 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,这就是所有内容啦! 如果你觉得这篇文章有帮助,或者有任何建议和指正,欢迎留言!

谢谢你的阅读!

相关推荐
星海拾遗4 小时前
git rebase记录
大数据·git·elasticsearch
ljh5746491195 小时前
PhpStorm 2022.3 版本中,修改使用 Git 提交时看到弹出式的对话框模式
ide·git·php·phpstorm
云闲不收7 小时前
git rebase
git
江上清风山间明月7 小时前
git pull和git checkout在恢复文件的区别
git·pull·checkout
海鸥818 小时前
in argocd ‘/tmp/_argocd-repo/../.git/index.lock‘: No space left on
git·argocd
尔嵘9 小时前
git操作
大数据·git·elasticsearch
好评1249 小时前
Linux文件上传git
linux·运维·git
大柏怎么被偷了11 小时前
【Git】企业级开发模型
git
Garfield200511 小时前
Git 分支拓扑实践
git·拓扑
DKNG11 小时前
【Windows Host】 hosts配置增加访问github流畅度
人工智能·git·github