Git 多人协作开发完整流程详解

发布于:2025-07-01 ⋅ 阅读:(16) ⋅ 点赞:(0)

在多人协作开发场景中,合理地使用 Git 可以有效避免冲突,提升效率,规范协作流程。
本文将从实践角度,结合可视化流程图和命令操作,详尽讲解多人协作下的 Git 工作流。


一、前置知识:Git 中的几个关键概念

1. 分支(Branch)

分支是 Git 中的核心概念,允许你在不影响主线的情况下开发新功能。常见分支有:

  • mainmaster:主分支,用于生产部署
  • develop:开发主干,用于集成所有开发功能
  • feature/xxx:功能分支,用于单人开发一个功能

2. 本地 vs 远程

  • 本地仓库:你机器上的 Git 仓库(提交是本地行为)
  • 远程仓库:如 GitHub、GitLab、Gitee,多个协作者共享的仓库(push 才会同步)

3. 常见命令回顾

  • git clone:克隆远程项目
  • git checkout -b 分支名:创建并切换新分支
  • git pull:拉取并合并远程改动
  • git push:推送本地代码到远程
  • git merge:将另一个分支合并进当前分支
  • git rebase:重写历史,慎用于公共分支

关于Merge和Rebase的详细区别,可参见下面这篇文章:

https://juejin.cn/post/7498997224400355347


二、团队协作的标准 Git 工作流(文字版)

假设有三人:你、张三、李四,在一个项目上协作开发,每人负责一个功能。

1. 从远程仓库克隆项目

git clone https://xxx.git
cd project

2. 从 develop 分支拉出自己的功能分支

git checkout develop
git pull origin develop         # 保证 develop 是最新的
git checkout -b feature/login  # 创建自己的功能分支

张三与李四也分别执行类似命令,创建:

  • feature/register
  • feature/profile

3. 各自在 feature 分支上开发,提交并推送

git add .
git commit -m "完成登录功能"
git push origin feature/login

git push origin feature/login 是 将本地的 feature/login 分支的提交推送到远程仓库对应的 feature/login 分支 。也就是推送到自己从主分支拉取出来的 feature/login 开发分支上 。

张三和李四也会 push 自己的 feature 分支。

4. 功能开发完成,合并到 develop 分支(张三先合并)

git checkout develop
git pull origin develop         # 拉取最新 develop(很重要)
git merge feature/register      # 合并张三的功能分支
git push origin develop

李四也完成开发后:

git checkout develop
git pull origin develop
git merge feature/profile
git push origin develop

你开发完登录功能后:

git checkout develop
git pull origin develop         # 必须拉最新,否则可能 push 报错
git merge feature/login
git push origin develop

5. 合并后可删除本地和远程 feature 分支(可选)

git branch -d feature/login
git push origin --delete feature/login

三、流程图演示(可视化理解)

1. 初始阶段

A -- B -- C               ← develop
           \
            \
             [你]    feature/login
             [张三]  feature/register
             [李四]  feature/profile

2. 各自提交(提交到本地 + 推送到远程)

A -- B -- C
           |\
           | \-- X -- Y     ← feature/login(你)
           | \-- D -- E     ← feature/register(张三)
           | \-- P -- Q     ← feature/profile(李四)

3. 张三先合并注册功能

A -- B -- C ------------ M1       ← develop
           |            /
           |         D--E
           |\
           | \-- X -- Y           ← feature/login
           | \-- P -- Q           ← feature/profile

4. 李四再合并

A -- B -- C ------------ M1 -------- M2  ← develop
           |            /          /
           |         D--E       P--Q
           |\
           | \-- X -- Y                     ← feature/login

5. 最后你合并登录功能

A -- B -- C ------------ M1 -------- M2 -------- M3 ← develop
           |            /          /          /
           |         D--E       P--Q       X--Y

四、关于 pull 失败和冲突的说明

情况:你开发完后直接 push,Git 提示:

! [rejected] develop -> develop (non-fast-forward)

说明:张三已经先 push 了,你的分支与远程 develop 历史发生分歧,Git 无法自动合并。

正确做法:

git pull origin develop   # 拉取远程并合并
# 如果有冲突,解决冲突
# 然后:
git add .
git commit -m "解决冲突"
git push origin develop

🚫 不要直接 git push --force,会覆盖张三的历史,破坏远程仓库。


五、常见误区及建议

误区 描述 正确做法
在 develop 上直接开发 多人同时提交,容易冲突 建立 feature 分支
不拉最新代码就合并 容易产生冲突、push 被拒绝 合并前一定先 pull develop
用 rebase 合并主分支 改写历史,危险 对公共分支使用 merge
直接 push --force 会覆盖他人改动 谨慎,除非团队一致同意

六、总结:完整协作流程回顾

  1. git clone 项目
  2. git checkout develop && git pull
  3. git checkout -b feature/xxx
  4. 本地开发,频繁 commit
  5. git push origin feature/xxx
  6. 完成功能后切 develop,pull 拉最新,merge 本地分支
  7. git push origin develop
  8. 功能合并后清理分支(可选)


网站公告

今日签到

点亮在社区的每一天
去签到