news 2026/9/2 14:42:27

【Git学习】Git分支的多人协作

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Git学习】Git分支的多人协作

单一分支的多人协作

创建testGit1本地与远程仓库
修改本地仓库local的级别的用户名和邮箱
$ git config --local user.name '鲁智深'
$ git config --local user.mail 'luzhishen@126.com'
项目克隆
把远程项目克隆到本地形成一个本地仓库:git clone 远程仓库HTTP
此时克隆下来的仓库和远程仓库的名字一致
也可以克隆远程项目自己定义仓库名字:git clone 远程仓库HTTP testGit2
指定本地仓库级别的用户名和邮箱
git config --local user.name '林冲'
git config --local user.email 'linchong@txjava.com'
下面演示单一分支的协作处理
在testGit1中通过鲁智深添加文件b.txt并推送到远程 git push origin master
此时林冲需要从远程仓库重新拉取 git pull origin master
这是一次多人协作,但事实情况更为复杂,例如当两个人修改同一个文件的时候会发生冲突,下面进行冲突演示
我们使用鲁智深修改b.txt内容后,提交并且推送到远程
此刻林冲也修改B.txt内容,提交并且推送远程的时候发现出现冲突,推送失败,产生冲突
首先需要拉取代码,拉取成功但是自动合并失败,我们需要修改冲突,修改完成后再提交,并推送至远程仓库

分支推送与拉取

分支推送协作

创建dev分支
git push无法把dev分支推送到远程
将本地分支推送到远程仓库并建立本地分支与远程分支的关联关系
git push --set-upstream origin dev
远程分支已经推送
除此之外我们可以使用下面命令完成远程分支推送 git push -u origin dev2
其中 -u 是 --set-upstream 的缩写
远程分支已经推送
将本地分支的代码推送到远程仓库时不仅会在远程创建分支并且 Git 也会自动在 .git/config 中添加配置绑定本地分支与远程分支之间的跟踪关系,如下

分支拉取协作

首先我们需要明确 git fetch 和 git pull 都是用于获取远程仓库更新的命令,核心区别在于是否自动将远程更新合并到本地当前分支
  • git fetch:只获取不合并,仅将远程仓库的最新状态同步到本地的远程跟踪分支(如 origin/master、origin/dev,这些是本地缓存的远程分支镜像),但不会自动合并到当前工作的本地分支。执行后,本地工作分支的代码不会被修改,你可以先查看远程更新与本地的差异,再手动决定是否合并。
  • git pull:获取且自动合并,本质是先执行 git fetch(拉取远程更新到对应的远程跟踪分支,如 origin/xxx),随后自动将该远程跟踪分支的更新合并到当前本地分支(例如,当前在 master 分支时,会自动合并 origin/master 到本地 master)。执行后,本地当前分支的代码会直接包含远程更新(若有冲突则需手动解决)。
我们使用林冲的仓库与账户进行拉取操作
若执行 git pull origin master,即从远程仓库origin的master分支拉取最新代码,并自动合并到当前所在的master本地分支中,如下
若执行 git pull,即Git将远程仓库的新分支(dev和dev2)抓取到了本地的远程跟踪分支中(即origin/dev和origin/dev2,这些是本地缓存的远程分支镜像),但随后试图将远程分支合并到当前本地分支时,由于当前所在分支没有与远程仓库的任何分支建立跟踪关联,不知道该合并哪个远程分支,合并失败最终只保留了抓取的结果
需要先通过 git fetch 或 git pull 将远程仓库的新分支抓取到本地,生成对应的远程跟踪分支,再执行 git checkout -b dev origin/dev,即基于远程跟踪分支创建本地的dev分支并切换到此本地分支,其中 origin/dev 指定新分支的基础来源,即本地缓存的远程跟踪分支(远程dev分支镜像)
还可以使用另一种方式,同样需要先通过 git fetch 或 git pull 将远程仓库的新分支抓取到本地,生成对应的远程跟踪分支,再执行该语句 git checkout --track origin/dev2
自动创建一个与远程 dev2 分支同名的本地分支,并让这个本地分支自动跟踪远程跟踪分支 origin/dev2,最后切换到这个新创建的本地 dev2 分支
基于远程跟踪分支创建本地分支时,Git 会自动绑定本地 dev 分支与远程 origin/dev 分支的跟踪关系,在 .git/config 中生成对应的跟踪关系配置

远程分支的删除

在鲁智深账户的本地仓库中删除dev2分支 git branch -d dev2
Git 会同时清理掉 .git/config 中与 dev2 分支相关的配置包括跟踪关系,但远程仓库上的分支还存在
删除远程仓库的 dev2 分支 git push origin --delete dev2
通过另一个用户来查看本地对应的远程分支
我们看到该本地仓库的远程跟踪分支 origin/dev2 尚未与远程仓库的最新状态同步
git remote show origin 查看远程仓库 origin 详细信息,发现远程仓库的 dev 分支被删除后,本地的远程跟踪分支 origin/dev2 不会自动消失
git remote prune origin 会检查远程 origin 的当前分支状态,然后删除本地所有远程已不存在的跟踪分支,确保本地的远程跟踪信息与远程仓库保持一致,仅清理不更新其他跟踪分支的内容
本地仓库再删除dev2分支
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 4:45:07

JavaEE进阶-SpringBoot三层架构:餐厅模式解析

目录 核心架构:数据流转的“流水线” 1. Entity (实体类) —— com.entity 2. Controller (控制层) —— com.controller 3. Service (业务层) —— com.service 4. Dao (持久层) —— com.dao 辅助架构:让系统更好用的“后勤部” 5. Config (配置…

作者头像 李华
网站建设 2026/9/2 6:51:54

从Bash脚本到Firebase数据库:解决JSON上传问题

在开发过程中,我们常常会遇到各种技术问题,尤其是涉及到云服务和数据管理时。本文将通过一个实际案例,详细讲解如何解决在Bash脚本中使用Firebase CLI上传JSON文件时遇到的错误。 问题背景 用户moco在使用Bash脚本尝试将一个JSON文件上传到Firebase实时数据库时,遇到了40…

作者头像 李华
网站建设 2026/9/2 22:44:01

sward全面介绍(7) - 如何将confluence数据导入sward

1、安装配置 首先安装配置sward 1.1 安装 下载,点此下载,或直接使用命令在线下载安装包 wget -O tiklab-sward-2.0.7.rpm https://install.tiklab.net/app/install/sward/2.0.7/tiklab-sward-2.0.7.rpm 安装,以centos为例,将Li…

作者头像 李华
网站建设 2026/9/2 21:11:09

Solon AI MCP v3.7.3, v3.6.6 发布

Solon AI & MCP(支持 LTS) Solon AI & MCP ,是 Solon 官方推出的 Java 智能体应用开发框架。旨在为 Java 开发者提供统一的接口抽象层,简化与 OpenAI、DeepSeek、QWen 等主流 AI 模型的集成流程,以及简化 Mcp…

作者头像 李华
网站建设 2026/9/2 22:41:20

OpenHarmony Flutter 分布式任务调度:跨设备负载均衡与资源优化方案

前言在开源鸿蒙(OpenHarmony)全场景分布式生态中,跨设备任务调度是实现多设备算力协同、资源高效利用的核心技术。传统单设备应用受限于硬件性能,无法高效处理高负载任务(如 AI 计算、视频渲染、大数据分析&#xff09…

作者头像 李华
网站建设 2026/9/2 16:13:27

探索Qt下的UI皮肤生成器:多风格与编译那些事儿

Qt下UI皮肤生成器,好几套UI皮肤风格。 Qt5.6.1_MinGW的debug下需要将Pro里的PRECOMPILED_HEADER注释掉,在release下编译无问题; 源码: 使用Qt5.6.1_MinGW,Qt5.7.1_msvc编译通过。在Qt开发的世界里,UI皮肤生…

作者头像 李华