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

【Git】P5 Git 远程仓库(3)pull 发生冲突

pull 发生冲突

  • 冲突在什么场景下发生?
  • 为什么要先 pull 再 push
  • 构建一个冲突场景
    • 初始
    • 开始操作:
      • 程序员2:
      • 程序员1:
      • 程序员2:
      • 发生冲突:
      • 查看冲突:
      • 解决冲突:


冲突在什么场景下发生?

Git在文件合并时是比较智能的,对于同一个文件不同位置的修改内容会自动合并,只有在同一个文件同一个位置被同时修改时(本地仓与远程仓的当前版本有差异),才会产生冲突。
摘自华为云,说的很清晰;

所以事实上很少情况下会发生冲突;只有在同一个文件,同一个位置,被同时修改


为什么要先 pull 再 push

在修改完之后打算上传 push 之前,第一步操作是先 pull,为什么?

对于push可以理解为覆盖,个人项目不会出现这个问题,但是大项目,往往有很多人在一起修改,甚至你都不知道是谁在修改。所以这里有一个时间差的问题。

为了理解这点,我想先重申一下解决步骤:
老板给一个任务,解决一个服务的bug

在这里插入图片描述

  1. git clone
  2. 修复bug
  3. git add .
  4. git commit
  5. git pull
  6. git push

在你的第二步开始,将云端拉到本地,到第5步时,你都是与云端“失联”的,云端任何修改你都没有同步到本地,所以你需要在第五步进行pull操作;


构建一个冲突场景

初始

云端:

user.txt 内容为 user=aaaaa

在这里插入图片描述

开始操作:

程序员2 -> 程序员1 -> 程序员2

程序员2:

git clone git@gitee.com:hongduoxu/git_test.git bug-test
cd bug-test
vim user.txt		# 正在更改 user=ccccc
# 未完待续...看程序员1操作

程序员1:

vim user.txt		# 内容修改为 user=bbbbb
git add .
git commit -m 'bbbbb'
git pull
git push

程序员2:

git add .
git commit -m 'ccccc'
git pull

发生冲突:

在这里插入图片描述

查看冲突:

cat user.txt

在这里插入图片描述

解决冲突:

vim user.txt
# 打开后手动解决问题,只保留需要的部分,然后保存 :wq

然后再次执行:

git add .
git comment -m 'xxxxx'

此时再执行 pull

git pull
# return: Already up to date.

最后上传 push

git push

解决冲突完成。

其实解决冲突的关键在于为什么会发生冲突,毕竟发生冲突的要求如此苛刻。看到冲突后,我暂时认为最大的问题是需要冲突的地方,跟程序员1商量该如何改。


2023.3.8 包玉刚图书馆

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

相关文章:

  • 关于世界坐标系,相机坐标系,图像坐标系,像素坐标系的一些理解
  • 企业防护ddos的注意事项,你知道吗?
  • RocketMQ如何测试
  • SpringBoot中的bean注入方式和原理介绍
  • ESP32设备驱动-RFID-RC522模块驱动
  • SMETA认证有些客户是需要做窗口期的
  • 面向对象设计模式:创建型模式之原型模式
  • 三维重建(单目、双目、多目、点云、SFM、SLAM)
  • Java中的final和权限修饰符
  • MySQL的基本语句(SELECT型)
  • 日志服务搭建-ES-FileBeat-Kibana
  • 大数据架构设计与数据计算流程
  • 207. 课程表
  • 2023-03-08 mysql列存储数据库-查询执行过程分析
  • 各种激活函数的计算公式、图像以及实现代码
  • ArangoDB
  • MySQL8.0Linux安装及主从的搭建
  • 苹果新专利实现无线技术传输睡眠数据,蓝牙在智能家居中的应用
  • 银行数字化转型导师坚鹏:数字化转型为什么需要致良知与知行合一
  • Web前端学习:章三 -- JavaScript预热(二)
  • Excel绘制数据对比表格-表格可视化
  • 究竟是谁负了谁,来自底层测试的2022年终总结
  • C++——IO流
  • 网络 | UDP与TCP协议讲解 | TCP可靠性是怎样实现的?
  • JavaEE——简单介绍Thread类以及线程的基本操作
  • Java的数据库编程:JDBC
  • 蓝桥冲刺31天之第六天
  • Streamlit 工具记录
  • GreenPlum小结
  • C语言中数组和指针