GitLab教程(三):多人合作场景下如何pull代码和处理冲突

2024-06-11 22:28

本文主要是介绍GitLab教程(三):多人合作场景下如何pull代码和处理冲突,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 1.拉取别人同步的代码到本地的流程
  • 2.push冲突
    • 发生场景
    • 情景模拟
    • 简单的解决方法

  • 在这一章中,为了模拟多人合作的场景,我需要一个人分饰两角。

  • 执行git clone xx远端仓库地址 xx文件夹命令,在clone代码时指定本地仓库的文件夹名:
    我这里是指定了将拉下来的代码存在test-another文件夹中,和在上一篇博客中产生的test文件夹相区分。也就是说,现在我本地有两个文件夹,test-another文件夹用来模拟另一个同事A的本地仓库,test文件夹模拟我自己的本地仓库。

在这里插入图片描述
在这里插入图片描述

1.拉取别人同步的代码到本地的流程

  • 同事A更新了他的本地仓库代码并同步到了远程仓库:
    假设他新建了一个file1.txt文件。

在这里插入图片描述

  • 然后同事A将他的本地更改同步到了远程仓库:

在这里插入图片描述
在这里插入图片描述

  • 我执行git pull命令可以将同事同步到远程仓库中的变更拉取下来:

在这里插入图片描述

整个流程看上去似乎是比较简单的,但实际工作中在多人合作的情况下却存在着push发生冲突这样的情况。

2.push冲突

发生场景

push冲突通常发生在使用版本控制系统(如Git)进行协作开发的过程中,特别是在多个开发者对同一份代码库的相同部分同时进行修改并尝试推送更改到远程仓库时。以下是两种常见的发生场景:

  1. 并行修改同一文件:最直接的情况是,两个或多个开发者同时修改了同一个文件的相同部分,并且每个人都试图将他们的更改推送到远程仓库的同一分支上。由于Git无法自动合并这些冲突的更改,就会出现push冲突。

  2. 分支基础已变更:当你在一个分支上工作了一段时间,而在此期间,其他人向该分支的上游提交了新的更改并合并到了远程仓库。这时,如果你没有及时拉取(pull)这些最新更改并合并到你的本地分支,直接尝试推送你的更改到远程,就可能会因为你的分支落后于远程而遇到push冲突。

情景模拟

假设我和同事A同时在各自的电脑上修改本地仓库,并都要将代码同步到远程仓库。

  • 同事A创建了一个file-A.txt文件,并先我一步将变更同步到了远程仓库:
    在这里插入图片描述

在这里插入图片描述

  • 在同一时间,我也在我的电脑上创建了一个file-me.txt文件,我相比同事A晚一步向远程仓库push我的本地变更:
    显示push失败,原因是远程仓库在我修改本地仓库期间已经发生了变化(来自同事A的修改和push)。
    在这里插入图片描述

简单的解决方法

一个简单的方法是先执行git fetch获取远端的最新改变,再执行git merge将远端的变更和本地已经commit的变更进行合并,这样做的方法比较简单,但是可能需要解决一下不同变更之间的冲突。

在这里插入图片描述

在这里插入图片描述

这样的解决方法比较简单,在要求不高的情况下可以生效。但是实际的多人场景下可能会产生的问题会比现在模拟的场景下多很多,因此从下一篇博客开始会开始介绍更多做法,并解析git命令背后的工作原理。

这篇关于GitLab教程(三):多人合作场景下如何pull代码和处理冲突的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1052428

相关文章

windos server2022的配置故障转移服务的图文教程

《windosserver2022的配置故障转移服务的图文教程》本文主要介绍了windosserver2022的配置故障转移服务的图文教程,以确保服务和应用程序的连续性和可用性,文中通过图文介绍的非... 目录准备环境:步骤故障转移群集是 Windows Server 2022 中提供的一种功能,用于在多个

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

龙蜥操作系统Anolis OS-23.x安装配置图解教程(保姆级)

《龙蜥操作系统AnolisOS-23.x安装配置图解教程(保姆级)》:本文主要介绍了安装和配置AnolisOS23.2系统,包括分区、软件选择、设置root密码、网络配置、主机名设置和禁用SELinux的步骤,详细内容请阅读本文,希望能对你有所帮助... ‌AnolisOS‌是由阿里云推出的开源操作系统,旨

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

PyTorch使用教程之Tensor包详解

《PyTorch使用教程之Tensor包详解》这篇文章介绍了PyTorch中的张量(Tensor)数据结构,包括张量的数据类型、初始化、常用操作、属性等,张量是PyTorch框架中的核心数据结构,支持... 目录1、张量Tensor2、数据类型3、初始化(构造张量)4、常用操作5、常用属性5.1 存储(st

Python视频处理库VidGear使用小结

《Python视频处理库VidGear使用小结》VidGear是一个高性能的Python视频处理库,本文主要介绍了Python视频处理库VidGear使用小结,文中通过示例代码介绍的非常详细,对大家的... 目录一、VidGear的安装二、VidGear的主要功能三、VidGear的使用示例四、VidGea

Java操作PDF文件实现签订电子合同详细教程

《Java操作PDF文件实现签订电子合同详细教程》:本文主要介绍如何在PDF中加入电子签章与电子签名的过程,包括编写Word文件、生成PDF、为PDF格式做表单、为表单赋值、生成文档以及上传到OB... 目录前言:先看效果:1.编写word文件1.2然后生成PDF格式进行保存1.3我这里是将文件保存到本地后

windows系统下shutdown重启关机命令超详细教程

《windows系统下shutdown重启关机命令超详细教程》shutdown命令是一个强大的工具,允许你通过命令行快速完成关机、重启或注销操作,本文将为你详细解析shutdown命令的使用方法,并提... 目录一、shutdown 命令简介二、shutdown 命令的基本用法三、远程关机与重启四、实际应用