当前位置: 首页 > 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 fetchgit 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.dtcms.com/a/515351.html

相关文章:

  • 服务外包网站成都住建局官网app
  • 【ABAP函数】+ALSM_EXCEL_TO_INTERNAL_TABLE批导长字段
  • 艺术学院网站模板wordpress二手车模板
  • docker api 常用接口
  • flutter鸿蒙:实现类似B站或抖音的弹幕功能
  • 从静态模型到数据驱动:图观模型编辑器让工程设备真实还原
  • 了解Docker的多阶段构建(Multi-stage Build)
  • [特殊字符] Berry.Live:开箱即用的.NET直播流媒体服务器
  • 网站模板的修改宝安企业网站建设
  • 网站开发软件费用2018网站流量怎么做
  • 数据结构:顺序表讲解(1)
  • 第二次作业-第二章时间服务
  • Python爬虫实战:获取香港恒生指数历史数据与趋势分析
  • 【Frida Android】基础篇11:Native层hook基础——修改原生函数的返回值
  • 什么是DNS负载均衡?提升网站稳定性与容错性的方法
  • 设计自学网站哪个好建设银行网站怎么短信转账
  • 网站如何做seo优化教程迪虎科技网站建设
  • win10底部搜索栏怎么关闭 图文详解
  • 网站备案密码是什么样的大冶建设局网站
  • python学习之进程
  • PAGE下载安装图解教程(附安装包)
  • 接口练习哈哈
  • 【原理解析】详细剖析 HAMi 在支持 NVIDIA GPU 拓扑感知调度时的具体设计与实现原理
  • Dubins曲线:最短有向路径的数学之美与工程实现
  • 解读“Time Model Statistics”中的“sql execute elapsed time”
  • 图形化设计或流程编辑软件界面组件
  • C++ char 类型深度解析:字符与字节的双重身份
  • 做网站的群html5网站正在建设中模板下载
  • 常平众展做网站长沙网上房地产官网
  • 在 Linux 中实现虚拟机管理程序级行为分析