
◆ 博主名称: 小此方-CSDN博客 大家好,欢迎来到小此方的博客。
⭐️网络系列个人专栏: 【插曲】Git
⭐️此方的GitHub: github_此方
⭐️ 我们思考 (Rethink) · 我们重建 (Rebuild) · 我们记录 (Record)
文章目录
- 概要&序論
- [一、 协同开发的前期准备](#一、 协同开发的前期准备)
-
- [1.1 模拟协同开发环境](#1.1 模拟协同开发环境)
- [1.2 托管平台权限配置](#1.2 托管平台权限配置)
- [二、 创建与绑定远程分支](#二、 创建与绑定远程分支)
-
- [2.1 远程创建 dev 分支](#2.1 远程创建 dev 分支)
- [2.2 本地拉取并关联远程分支](#2.2 本地拉取并关联远程分支)
- [三、 同一分支下的协作开发与冲突解决](#三、 同一分支下的协作开发与冲突解决)
-
- [3.1 顺利推送场景](#3.1 顺利推送场景)
- [3.2 冲突产生与解决](#3.2 冲突产生与解决)
- [四、 合并 dev 分支至 master](#四、 合并 dev 分支至 master)
- [五、 同一分支多人协作模式总结](#五、 同一分支多人协作模式总结)
- [六、 多需求 Feature 分支协作](#六、 多需求 Feature 分支协作)
-
- [6.1 各自创建 feature 分支进行独立开发](#6.1 各自创建 feature 分支进行独立开发)
-
- [6.1.1 开发者 A 创建 feature-1 分支并推送](#6.1.1 开发者 A 创建 feature-1 分支并推送)
- [6.1.2 开发者 B 创建 feature-2 分支并推送](#6.1.2 开发者 B 创建 feature-2 分支并推送)
- [6.2 接管与协助他人分支开发](#6.2 接管与协助他人分支开发)
-
- [6.2.1 拉取并关联远程 feature-2 分支](#6.2.1 拉取并关联远程 feature-2 分支)
- [6.2.2 继续开发并推送更新](#6.2.2 继续开发并推送更新)
- [6.2.3 原开发者同步更新与关联设置](#6.2.3 原开发者同步更新与关联设置)
- [6.3 合并 feature 分支至 master](#6.3 合并 feature 分支至 master)
-
- [6.3.1 开发者 B 率先合并 feature-2 至 master](#6.3.1 开发者 B 率先合并 feature-2 至 master)
- [6.3.2 开发者 A 合并 feature-1 至 master](#6.3.2 开发者 A 合并 feature-1 至 master)
- [6.4 清理远程已失效的分支](#6.4 清理远程已失效的分支)
-
- [6.4.1 远程分支删除后的本地残留问题](#6.4.1 远程分支删除后的本地残留问题)
- [6.4.2 使用 git remote prune 清理无效分支](#6.4.2 使用 git remote prune 清理无效分支)
概要&序論
Hello大家好,我是此方 。本文通过模拟真实团队开发环境,系统演示 Git 多人协作的完整流程:从托管平台权限配置、远程分支创建与本地关联入手,分析多人向同一分支推送代码时的正常流程与冲突解决方法。随后对比同分支协作与 Feature 分支协作模式,演示多个开发者如何独立开发、接管他人分支、同步远程更新并合并代码,最后使用 git remote prune 清理远程已删除但本地仍保留的失效分支,建立规范的团队协作工作流。
一、 协同开发的前期准备
在前期的学习中,我们已经掌握了 Git 的本地基本操作(如分支管理、版本回退、冲突解决等),并完成了远端仓库的建立、克隆、推送与拉取。接下来我们将进入团队协同开发的核心场景------实现多人协作开发。
在真正开始多人协作前,需要先搭建好协同开发的环境并分配权限。
1.1 模拟协同开发环境
为了模拟真实开发中两名开发者同时协作的情形,我们可以在本地不同环境(例如 Linux 环境与 Windows 环境)下分别克隆同一个项目仓库:
bash
# 在环境一(Linux)下查看当前项目路径
pwd
/home/hyb/git_teaching
# 在环境二(Windows PowerShell)下克隆同一个远程仓库
git clone [https://gitee.com/hyb91/git_teaching.git](https://gitee.com/hyb91/git_teaching.git)
克隆成功后,两个独立的本地环境都拥有了完整的项目代码结构(如 .gitignore 、file.txt 、README.md 等文件)。
1.2 托管平台权限配置
在实际项目中,每个开发者都有独立的账号。若要让团队成员具备提交代码的权限,仓库创建者必须将成员添加至仓库的开发者列表中:
- 进入远程仓库页面,点击右上角的"管理"选项。
- 在左侧菜单中选择"仓库成员管理"下的"开发者"。
- 点击"添加仓库成员",选择"邀请用户"。
- 可以通过直接搜索用户名、复制链接邀请或二维码邀请等方式将成员加入,并赋予"开发者"权限。
完成上述设置后,多名开发者就具备了向该远程仓库推送代码的权限。
二、 创建与绑定远程分支
为了保证主分支(master )的稳定,在实际项目开发中,任何情况下都不建议直接在 master 分支上频繁修改代码。通常会基于主分支新建开发分支(如 dev 分支),用于日常功能迭代。
2.1 远程创建 dev 分支
首先在远程仓库(如 Gitee)页面中新建名为 dev 的远程分支。
2.2 本地拉取并关联远程分支
远程分支创建完毕后,各团队成员需要将最新的远程分支信息拉取到本地,并建立本地分支与远程分支的追踪绑定关系:
bash
# 拉取远端最新分支信息
git pull
# 查看远端分支(需要加 -r 参数)
git branch -r
# 创建本地 dev 分支并与远程 origin/dev 分支建立关联
git checkout -b dev origin/dev
切换成功后,本地即建立了 dev 分支,且该分支已与远程的 origin/dev 分支自动完成绑定,方便后续直接进行推送与拉取。
三、 同一分支下的协作开发与冲突解决
当多名开发者同时在 dev 分支上进行开发并推送代码时,可能遇到顺利推送或产生冲突的不同情况。
3.1 顺利推送场景
假设开发者 A 在本地 dev 分支上修改了文件并率先推送到远端:
bash
# 修改文件内容
vim file.txt
# 提交至本地仓库
git add file.txt
git commit -m "first function"
# 推送至远程 dev 分支
git push origin dev
由于远程 dev 分支此时没有其他人提交的新代码,开发者 A 的推送将顺利成功。
3.2 冲突产生与解决
此时,开发者 B 也在本地 dev 分支上修改了同一文件(如 file.txt),并在本地完成了提交,尝试推送到远端:
bash
git push origin dev
此时终端会提示推送失败(rejected),原因在于远程分支已经包含了开发者 B 本地没有的新提交,版本发生了偏离。
解决办法如下:
-
拉取远端最新代码 :执行 git pull 命令,将远程 dev 分支的最新提交抓取到本地并尝试自动合并。
bashgit pull -
手动解决冲突 :如果自动合并失败,Git 会在文件中标注冲突区域(包含
<<<<<<< HEAD、=======、>>>>>>>等标记)。使用编辑器打开冲突文件(如 file.txt),保留正确的代码并删除冲突标记。 -
重新提交与推送:冲突解决完成后,重新提交到本地仓库,并推送到远端。
bashgit add file.txt git commit -m "merge dev" git push origin dev
推送成功后,远端仓库即包含了合并后的最新代码。开发者 A 此时只需在本地执行 git pull,即可同步获取开发者 B 合并后的最新代码。
四、 合并 dev 分支至 master
当 dev 分支上的阶段性功能开发完毕且测试无误后,需要将 dev 分支的代码合并回 master 主分支。
标准的操作流程如下:
-
更新本地 master 分支:
bashgit checkout master git pull -
切换至 dev 分支合并 master 分支(防止直接在 master 上解冲突):
bashgit checkout dev git merge master -
将 dev 分支合并至 master 分支:
bashgit checkout master git merge dev git push origin master
合并并推送成功后,远程 master 分支即更新为最新代码。若该阶段的 dev 分支使命已经完成,可以直接在远程仓库页面将该 dev 分支进行删除清理。
五、 同一分支多人协作模式总结
总结而言,在同一分支下进行多人协同开发的标准流程如下:
- 首先尝试推送 :使用 git push origin 推送自己的修改;
- 推送失败则拉取 :若推送失败,说明远程分支比本地更新,需要先使用 git pull 试图合并;
- 存在冲突则解决 :若 git pull 提示合并冲突,则手动解决冲突并在本地提交;
- 再次推送 :冲突解决并提交后,重新使用 git push origin 推送即可成功;
- 迭代完成合并主干 :功能开发完毕后,将分支合并进 master 主分支,最后清理已失效的分支。
六、 多需求 Feature 分支协作
在实际项目开发中,如果同时有多个需求需要多名开发者并行开发,通常不会挤在同一个分支上进行,而是为一个需求或功能点单独创建一个 feature 分支。
除了在代码托管平台上直接创建远程分支外,我们在本地创建的分支也可以通过推送的方式直接同步到远端。
6.1 各自创建 feature 分支进行独立开发
假设现在有两个需求需要同时开发,两名开发者可以分别在本地新建各自的特性分支并进行推送。
6.1.1 开发者 A 创建 feature-1 分支并推送
开发者 A 在本地创建 feature-1 分支,新增需求文件并推送到远程仓库:
bash
# 新增本地分支 feature-1 并切换
git checkout -b feature-1
# 新增需求内容------创建 function1 文件
vim function1
cat function1
# 将 feature-1 分支推送到远端
git add function1
git commit -m "add function1"
git push origin feature-1
6.1.2 开发者 B 创建 feature-2 分支并推送
与此同时,开发者 B 在自己的机器上创建 feature-2 分支并完成开发推送:
bash
# 创建并切换到 feature-2 分支
git checkout -b feature-2
# 在分支下新增需求文档 function2
vim function2
cat function2
# 将 feature-2 分支推送到远端
git add function2
git commit -m "add function2"
git push origin feature-2
此时,在各自的本地仓库中,两名开发者互看不到对方新建的文件。同时推送各自的 feature 分支到远端时不会产生任何冲突,实现了互不干扰的并行开发。
6.2 接管与协助他人分支开发
在协同开发过程中,如果某位开发者因故无法继续开发(如请假或生病),需要其他成员接手其分支继续开发,可以通过以下步骤完成分支接管。
6.2.1 拉取并关联远程 feature-2 分支
接手者需要先获取远程仓库的最新分支信息,并切换到对应的远程分支上:
bash
# 必须先拉取远端仓库内容
git pull
# 查看远端分支,确认已被拉取到本地列表
git branch -a
# 切换到 feature-2 分支上,并与远程 feature-2 分支建立关联
git checkout -b feature-2 origin/feature-2
# 查看当前目录文件,已包含对方创建的 function2 文件
ls
建立关联后,接手者便可以在本地看到对方之前的代码并继续开发。
6.2.2 继续开发并推送更新
接手者补充开发内容并重新推送到远程 feature-2 分支:
bash
# 继续开发修改
vim function2
cat function2
# 提交并推送内容
git add function2
git commit -m "modify function2"
git push origin feature-2
6.2.3 原开发者同步更新与关联设置
当原开发者回归并准备继续开发时,需要先拉取最新的修改。如果直接执行 git pull 提示缺少追踪信息(tracking information),说明本地分支与远程分支未建立绑定关系。
根据终端提示,执行以下命令建立链接:
bash
# 设置本地 feature-2 与远程 origin/feature-2 的关联
git branch --set-upstream-to=origin/feature-2 feature-2
# 重新拉取远端更新
git pull
拉取成功后,原开发者的本地代码即可与远端保持完全一致,可以继续进行后续的开发工作。
6.3 合并 feature 分支至 master
各个需求开发测试完毕后,需要依次将分支代码合并到 master 主分支中。
6.3.1 开发者 B 率先合并 feature-2 至 master
率先开发完成的开发者先将代码合并回主干:
bash
# 1. 切换至 master,拉取最新代码
git checkout master
git pull
# 2. 切换至 feature-2 分支,合并 master 分支
git checkout feature-2
git merge master
# 3. 切换至 master,合并 feature-2 并推送至远端
git checkout master
git merge feature-2
git push origin master
推送成功后,远程 master 分支即包含了 feature-2 的代码。
6.3.2 开发者 A 合并 feature-1 至 master
随后开发者 A 也开发完毕,按照同样的流程将 feature-1 合并回主干:
bash
# 1. 切换至 master 分支拉取最新内容(此时会拉到刚才合并的 feature-2 代码)
git checkout master
git pull
# 2. 切换至 feature-1 分支,合并最新的 master 分支(如有冲突在 feature-1 处理)
git checkout feature-1
git merge master
# 3. 切换至 master,合并 feature-1 并推送到远端
git checkout master
git merge feature-1
git push origin master
此时远程 master 分支同时包含了 function1 与 function2 的完整代码。
6.4 清理远程已失效的分支
当所有 feature 分支开发完毕并成功合并到 master 后,可以在远程仓库页面将已经废弃的 feature-1 和 feature-2 分支进行删除。
6.4.1 远程分支删除后的本地残留问题
虽然远程仓库中的分支已被删除,但在本地执行 git branch -a 时,终端依然能够看到 remotes/origin/feature-1 等已失效的远程分支缓存:
bash
git branch -a
6.4.2 使用 git remote prune 清理无效分支
为了核查远端分支状态,可以运行以下命令查看远程仓库的详细绑定信息:
bash
git remote show origin
在输出结果中,Git 会明确提示部分分支在远程已不存在(stale),并建议使用 git remote prune 进行清理。
执行以下命令清理本地关于远程失效分支的缓存记录:
bash
git remote prune origin
执行后,终端会显示 [pruned] origin/feature-1 等清理提示。再次运行 git branch -a 检查,即可发现本地记录的失效远程分支已被彻底清除。本地分支的删除则可根据先前学习的 git branch -d 命令按需手动清理。
好的本期内容就到这里,如果对你有帮助,还不要忘记点赞三联支持。我是此方,我们下期再见。bye!