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

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命令背后的工作原理。

http://www.lryc.cn/news/369677.html

相关文章:

  • 模版偏特化之std::enable_if
  • 好用的Web数据库管理工具推荐(ChatGPT的推荐)
  • encoding Token和embedding 傻傻分不清楚?
  • 一个公用的数据状态修改组件
  • [python]yfinance国内不能使用
  • Frontiers旗下期刊,23年分区表整理出炉!它还值得投吗?
  • 基于JSP的毕业生就业信息管理系统
  • CDN、CNAME、DNS
  • 直播商城源码-PC+APP+H5+小程序现成源码
  • 16. 《C语言》——【牛客网BC124 —— BC130题目讲解】
  • Docker 国内镜像源更换
  • python07
  • 【CTS】android CTS测试
  • 【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【08】【商品服务】Object划分_批量删除
  • JAVA开发 PDF文件生成表格,表格根据内容自动调整高度
  • OSINT技术情报精选·2024年6月第1周
  • 惊艳的短视频:成都科成博通文化传媒公司
  • 消费增值模式引领业绩飙升与用户活跃
  • 二叉树从入门到AC(3)完全二叉树与堆
  • AI写作:如何让创作过程更流畅?
  • 2024中国海洋装备展暨航海装备大会(福州海峡国际会展中心)
  • CyberDAO:引领Web3时代的DAO社区文化
  • 测试面试点
  • Nginx配置详细解释:(4)高级配置
  • OceanBase 4.3 特性解析:列存技术
  • ARM32开发--PWM与通用定时器
  • debugger(七):栈帧(backtrace)
  • kafka-重试和死信主题(SpringBoot整合Kafka)
  • electron-Vue: Module parse failed: Unexpected character ‘ ‘
  • 贪心算法-数组跳跃游戏(mid)