当前位置: 首页 > news >正文

【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分支
http://www.jsqmd.com/news/73669/

相关文章:

  • 我为什么要离开家乡,来北京打拼?(说说我自己的故事...)
  • Windows右键菜单终极清理指南:3步打造清爽高效操作体验
  • 春日为你写下了几行诗句
  • 【Git学习】GitLab介绍
  • 在Linux中如何查看内存使用情况?
  • 网络安全工作必须有证吗?
  • Ascend C Tiling维度切分策略全解 - Block、Core与硬件单元的映射艺术
  • Spring AOP 源码深度解析:从代理创建到通知执行的完整链路
  • Kimi-VL-A3B-Thinking-2506焕新发布:多模态AI性能全面跃升,引领开源模型技术革新
  • 多模态向量技术突破:Jina Embeddings V4重构AI搜索范式,38亿参数开启跨模态理解新纪元
  • Wan2.2-T2V-A14B在滑坡灾害预警动画中的土体位移模拟
  • sward全面介绍(7) - 如何将confluence数据导入sward
  • 手撸 Spring 简易版 AOP
  • 从文本到电影级画面:Wan2.2-T2V-A14B视频生成技术拆解
  • Venture Global宣布完成Venture Global Plaquemines LNG, LLC 30亿美元高级担保票据发行
  • 从零配置到高效开发,Cirq代码补全插件实战教程,量子程序员必备技能
  • 车联网时序数据库哪个好
  • **主题:** 医疗数据标准化漏异常值,后来补鲁棒缩放才稳住多中心模型预测
  • 基于PLC的室内空气净化器控制系统设计
  • 别再把数据管道当“体力活”了:从单体任务到事件驱动的升级之路
  • 百度ERNIE模型家族2025年度技术突破全景:从基础研究到产业落地的里程碑跨越
  • Skyhigh Security升级数据安全态势管理(DSPM)能力,助力企业满足《数字个人数据保护法》(DPDPA)合规要求,强化亚太地区数据保护
  • 【最详细】Kubernetes探针介绍、应用与最佳实践
  • **主题:** “医疗PINN漏物理约束,器官运动预测全错,补动力学方程才稳住”
  • 玩转 Linux passwd 命令:从密码修改到批量运维,一篇吃透!
  • 从Bash脚本到Firebase数据库:解决JSON上传问题
  • Comsol 超构表面远场偏振态绘制那些事儿
  • 基于大数据的手机商品电商数据分析系统Scrapy+hadoop
  • BepInEx模组开发终极指南:5步搞定Unity游戏插件框架
  • 永磁同步电机滑模观测器Simulink搭建模型探索