GIt的原理和使用(五):模拟多人协作的两种情况

目录

多人协作

多人协作一

准备工作 

 协作开发

多人协作二

准备工作

额外场景

申请单合并分支

更推荐写法 

远程分支删除后,本地git branch -a依然能看到的解决办法


多人协作

多人协作一

  • 目标:在远程master分支下的file.txt文件新增代码“aaa”和“bbb”
  • 实现:由开发者1新增“aaa”,由开发者2新增“bbb”
  • 条件:在一个分支下协作完成

准备工作 

1、在远程仓库中创建一个dev分支(远程分支,很推荐)

2、令linux中的开发者1获取新建的dev分支

  • git branch -r:只显示哪些远程分支已经被拉取到了本地
  • git branch -a:列出所有的分支,包括本地分支和远程分支,如果一个远程分支被拉取到了本地,它将以类似 remotes/origin/branch_name 的形式显示在列表中

3、在windows环境下clone一个和linux中开发者1一样的仓库,模拟开发者2:

        ①D盘新建一个空的git文件夹,进入文件夹,在空白处按住shift+鼠标右键,选择在此处打开PowerShell窗口:

② 将远程仓库克隆给一份给它

 协作开发

1、开发者1在其本地创建一个dev分支,在将该分支切换为工作分支后与远程dev分支建立连接

  • git checkout -b 本地分支名 远程分支名
  • git branch -vv:显示本地分支列表以及每个分支的跟踪信息

2、修改file.txt文件,向其中新增aaa并提交给本地仓库的dev分支

3、将开发者1的本地dev分支提交给远程dev分支 

出现以下界面可以用git config --global push.default matching指令解决:

提交成功: 

4、开发者2在其本地创建一个dev分支,在将该分支切换为工作分支后与远程dev分支建立连接

5、在记事本上修改file.txt文件,新增bbb

6、尝试将开发者2的本地dev分支提交给远程dev分支 

  • 原因:冲突问题,二者都将file.txt文件新增内容提交给远程仓库,远程仓库不知道要用谁的

7、人工解决冲突问题并再次提交(对远程dev分支与当前dev分支合并后出现的冲突进行修改)

8、向远程dev分支推送成功(此时远程master分支中的file.txt文件仍未被修改)

9、合并远程的dev分支和master分支 

远程操作: 

本地操作: 

①将本地dev更新至最新(如果不更本地dev的file.txt没有新增bbb)

②切换至本地master并令本地master为最新状态

如果不更新的话,如果远程master中有ccc但是此时本地master没ccc,在本地master合并了本地dev后进行提交时,该master也没有ccc 

③切换至本地dev,并合并本地master(由于什么都没干所以中间有些内容是没啥东西的)

  • 原因:这样有了冲突也可以在dev上进行修改,直接在master上修改有风险

④切换至本地master,并合并本地dev,最后将合并后的master提交给远程master

⑤查看远程仓库的master分支中的file.txt文件(已被修改)

⑥删除远程dev分支

多人协作二

  • 目标:远程master分支下新增function1和function2文件
  • 实现:由开发者1新增function1,由开发者2新增function2
  • 条件:在不同分支下协作完成

准备工作

①开发者1创建一个feature-1分支,并切换至该分支,同时在该分支下创建并编写function1文件

②将本地feature-1分支推送至远程仓库

本地与远程仓库建立连接的三种方式:(②时的远程仓库中没有设置分支所以后两种方法不能用)

  • git push origin 本地分支名:强制推送本地分支至远程仓库
  • git checkout -b 本地分支名 远程分支名:切换至本地分支时就将该分支与远程分支建立连接
  • git branch -u origin/远程分支名 本地分支名:单纯的将本地分支和远程分支建立连接

③保证开发者2的master分支是最新的版本

④开发者2创建一个feature-2分支,并切换至该分支,同时在该分支下创建并编写function2文件

  • 新建function2文件时直接在对应文件夹下创建function2文本文件即可 

至此已完成初始目标 

额外场景

问题:开发者2生病,开发者1要接替开发者2的工作

①开发者1从远程仓库中获取开发者2的工作内容

对应git pull:

  • 拉取分支中的内容时需要将两个分支建立连接后才能拉取
  • 可以直接拉取仓库内容

②开发者1创建feature-2分支,并切换至该分支,同时将该分支与远程仓库中的feature-2分支连接

③开发者1帮助开发者2继续开发他的function2文件,同时提交至本地feature-2分支 

④将本地feature-2分支更新的内容推送到远程feature-2分支中 

新问题:此时开发者2病好了申请继续开发

①开发者2获取远程仓库中开发者1写了一部分的feature-2分支的内容(不拉就还是一行coding)

② 开发者2完成对function2文件的开发

申请单合并分支

管理者进行审批: 

 

更推荐写法 

        虽然申请单的方式看起来很方便,但是为了防止冲突问题,我们更推荐在副分支上将该副分支与主分支合并后(有冲突问题就解决)再将该分支与主分支合并的方式:

①将开发者1的master分支更新至最新:

② 合并本地的feature-1分支和master分支,如果两个分支没有冲突就会显示以下界面

③查看本地feature-1分支是否与远程的feature-1分支连接

④强制将开发者1的本地feature-1分支推送给远程仓库(新修改的内容覆盖远程的)

⑤提交申请表单申请将远程feature-1分支与远程master分支合并

 ⑥删除远程的feature-1和-2分支 

远程分支删除后,本地git branch -a依然能看到的解决办法

在删除远程仓库的feature-1和feature-2分支后,远程仓库中只有master分支了:

但是此时我们在开发者中使用git branc -a依然能看到原来的feature-1和feature-2分支:

展示远程分支情况指令:git remote show origin

清理无用远程分支:git remote prune 指令名 远程仓库分支名(git branch -a时不会显示)

最后用git branch -d 分支名删除本地的无用分支即可

~over~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/503898.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

运筹学基础(三):求解整数规划的切平面法(cutting plane method)

文章目录 算法思想一个例子参考文档 算法思想 先将整数规划问题松弛为线性规划问题,然后割掉线性规划问题可行域的一部分(只包含非整数解),使得线性规划问题的最优解在原整数规划问题的可行域某顶点上取得。 因此,割平…

VuePress基于 Vite 和 Vue 构建优秀框架

VitePress 是一个静态站点生成器 (SSG),专为构建快速、以内容为中心的站点而设计。简而言之,VitePress 获取用 Markdown 编写的内容,对其应用主题,并生成可以轻松部署到任何地方的静态 HTML 页面。 VitePress 附带一个用于技术文档…

浅析AI大模型当前存在的技术瓶颈和限制及解决方案

方向五:未来发展趋势与挑战 提示:展望AI大模型学习的未来发展趋势,并讨论当前面临的主要挑战。可以关注新技术、新方法的出现,以及它们对AI大模型学习的影响;同时,也可以分析当前存在的技术瓶颈和限制&…

Android MediaPlayer

MediaPlayer 类是媒体框架最重要的组成部分之一。此类的对象能够获取、解码以及播放音频和视频,而且只需极少量设置。它支持多种不同的媒体源,例如: • 本地资源 • 内部 URI,例如您可能从内容解析器那获取的 URI • 外部网址…

JavaScript(一)---【js的两种导入方式、全局作用域、函数作用域、块作用域】

一.JavaScript介绍 1.1什么是JavaScript JavaScript简称“js”&#xff0c;js与java没有任何关系。 js是一种“轻量级、解释型、面向对象的脚本语言”。 二.JavaScript的两种导入方式 2.1内联式 在HTML文档中使用<script>标签直接引用。 <script>console.log…

sklearn主成分分析PCA

文章目录 基本原理PCA类图像降维与恢复 基本原理 PCA&#xff0c;即主成分分析(Principal components analysis)&#xff0c;顾名思义就是把矩阵分解成简单的组分进行研究&#xff0c;而拆解矩阵的主要工具是线性变换&#xff0c;具体形式则是奇异值分解。 设有 m m m个 n n …

第二百三十一回

文章目录 1. 概念介绍2. 符号和平台2.1 符号2.2 平台 3. 问题与解决3.1 常见问题3.2 解决方法 4.内容总结 我们在上一章回中介绍了"关于intl报错的问题"相关的内容&#xff0c;本章回中将介绍不同平台上换行的问题.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1…

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之八 简单水彩画效果

Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之八 简单水彩画效果 目录 Python 基于 OpenCV 视觉图像处理实战 之 OpenCV 简单实战案例 之八 简单水彩画效果 一、简单介绍 二、简单图像浮雕效果实现原理 三、简单水彩画效果案例实现简单步骤 四、注意事项…

JavaScript动态渲染页面爬取——CSS位置偏移反爬案例分析与爬取实战

CSS位置偏移反爬案例分析与爬取实战 案例 案例网址&#xff1a;https://antispider3.scrape.cener/&#xff0c;页面如下图所示&#xff1a; 尝试用Selenium获取首页的页面源代码&#xff0c;并解析每个标题的内容&#xff1a; from selenium import webdriver from pyquery…

C++中浅拷贝和深拷贝对象复制概念

1.浅拷贝&#xff08;Shallow Copy&#xff09;&#xff1a; 浅拷贝是指在对象复制时&#xff0c;只是复制对象的值&#xff0c;而不会复制对象指向的资源。这意味着对象和其副本会指向同一块内存空间&#xff0c;当一个对象改变时&#xff0c;另一个对象也会受到影响。 #inclu…

算法题->移动零的C语言和JAVA的双指针解法

使用C语言和JAVA代码通过双指针进行解题 题目描述:给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 理解题意:不改变数组中非零元素的顺序,并把0元素放在非零元素后面. 链接: https://leetcode.cn/problems/m…

光明源@智慧厕所公厕软件系统有哪些核心功能?

在现代城市的建设中&#xff0c;智慧公厕的建设成为了提升城市品质和居民生活质量的重要举措。而智慧公厕的核心&#xff0c;不仅仅在于其硬件设备的智能化&#xff0c;同样重要的是其背后支持的智慧厕所公厕软件系统。让我们一起探讨&#xff0c;智慧厕所公厕软件系统有哪些核…

上位机图像处理和嵌入式模块部署(qmacvisual图像拼接)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 qmacvisual本身提供了图像拼接的功能。功能本身比较有意思的。大家如果拍过毕业照&#xff0c;特别是那种几百人、上千人的合照&#xff0c;应该就…

了解 LoadRunner 性能测试软件及其基础使用

目录 一、了解LoadRunner 1、什么是Loadrunner&#xff1f; 2、Loadrunner包括什么组件&#xff1f; &#xff08;1&#xff09;前台组件 &#xff08;2&#xff09;后台组件 二、LoadRunner三大组件 1、VuGen&#xff08;虚拟用户脚本生成器&#xff09; &#xff08;…

Go 之 Gin 框架

Gin 是一个 Go (Golang) 编写的轻量级 web 框架&#xff0c;运行速度非常快&#xff0c;擅长 Api 接口的高并发&#xff0c;如果项目的规模不大&#xff0c;业务相对简单&#xff0c;这个时候我们也推荐您使用 Gin&#xff0c;特别适合微服务框架。 我自己也是Go开发方面的菜鸟…

基于SpringBoot的“校园台球厅人员与设备管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SpringBoot的“校园台球厅人员与设备管理系统”的设计与实现&#xff08;源码数据库文档PPT) 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBoot 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 系统首页界面图…

XUbuntu22.04之激活Linux最新Typora版本(二百二十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

Python数据结构实验 图实验(二)

一、实验目的 1&#xff0e;掌握生成树和最小生成树方法&#xff0c;包括普里姆算法设计和克鲁斯卡尔算法设计&#xff1b; 2&#xff0e;掌握求解图的最短路径方法&#xff0c;包括单源最短路径的狄克斯特拉算法设计和多源最短路径的弗洛伊德算法设计&#xff1b; 3&#x…

动态规划——回文串问题

目录 练习1&#xff1a;回文子串 练习2&#xff1a;最长回文子串 练习3&#xff1a;回文串分割IV 练习4&#xff1a;分割回文串 练习5&#xff1a;最长回文子序列 练习6&#xff1a;让字符串成为回文串的最小插入次数 本篇文章主要学习使用动态规划来解决回文串相关问题&…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑新能源发电商租赁共享储能的电力市场博弈分析》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…