Git旧文件覆盖引发思考

ops/2024/11/28 21:38:14/

一天,我的同事过来找到我,和我讲:张叫兽,大事不好,我的文件被人覆盖了。git是真的不好用啊

git不好用?文件被覆盖;瞬间我似乎知道了什么,让我想到了某位男明星的语法:他一定是犯了全天下git初学者都会犯的错误。

一了解,果不其然

先说结论:git拉取,如果发生冲突,尽量保证Stage空间文件都提交

下面我们把这起事故的全流程给大家唠唠哈:

  1. 首先小红和小王都是基于commited 100的提交来做开发
  2. 开始小红对于README.md文件以及test.c文件都做了修改,然后提交并提到了git服务器(Gitea/Gitee/Github/GitLab)
  3. 咱们回头再来看小王,小王基于commit 100,对于test.c做了修改,很明显,test.c文件push将会发生冲突;
  4. 提交本地没问题,push的时候失败,于是通过git pull命令,来去最新代码,解决冲突
  5. 前方高能!!!合并的时候,已经列出了README.md在Stage区(也就是Git的暂存区),但是,基于SVN的历史经验,小王觉得自己没有修改README.md,然后果断的放弃了修改,只是提交了test.c文件
  6. 然后就是推送的git 远程服务器
  7. 此时小红再次拉取新代码,发现自己之前对于README.md的修改丢失了

为什么会这样?

从好理解的角度来看,大家可以理解为,每次push行为是将要让远程服务器的“所有的”文件内容和本地分支的内容,完全一样

那么,git是怎么做到这一点的呢?因为merge操作是一种特殊的提交,对于普通的提交,只是会记录local分支的提交内容:

他会记录本地仓库合并后的文件和合并双方的差异(本地分支原来的文件,以及拉取分支之间的差异),所以当你把这个merge的commit推送到了Git服务器之后,Git的原则就是提交方为大,对于有差异的地方,按照提交方为准。所以就小王的push之后,将自己本地旧版的README.md文件成功的错误的推送到了git服务器。


http://www.ppmy.cn/ops/137480.html

相关文章

C语言中使用动态内存

在前面介绍C语言的内存模型时知道C语言中将内存划分为多个区间:栈区、堆区、静态区、常量区、代码区。在方法内定义和使用的变量,如果没有使用static关键字修饰都是在栈区内,该区内定义的变量不需要我们管理,系统会自动申请和释放…

【设计模式】1. 构建器模式(Builder Pattern)是一种创建型设计模式

构建器模式(Builder Pattern)是一种创建型设计模式,用于分步骤构建复杂对象,同时允许按照不同的需求生成不同的表示。该模式将对象的构建过程与其表示分离,使得相同的构建过程可以创建不同的对象。 核心思想 构建器模…

Go 中的并发 Map:深入探索 sync.Map 及其他实现方法

在 Go 语言的并发编程世界中,数据共享和同步是永恒的话题。map 是 Go 语言中常用的数据结构,但在多 goroutine 环境中直接使用它并不是线程安全的。因此,我们需要采用特定的策略来确保并发访问的安全性。本文将深入探讨 Go 中的并发 Map&…

Android 设备使用 Wireshark 工具进行网络抓包

背景 电脑和手机连接同一网络,想使用wireshark抓包工具抓取Android手机网络日志,有以下两种连接方法: Wi-Fi 网络抓包。USB 网络共享抓包。需要USB 数据线将手机连接到电脑,并在开发者模式中启用 USB 网络共享。 查看设备连接信…

Design Linear Filters in the Frequency Domain (MATLAB帮助文档)

Design Linear Filters in the Frequency Domain 这个帮助文档写得很好,简单明了,一句废话没有。 This topic describes functions that perform filtering in the frequency domain. 2-D Finite Impulse Response (FIR) Filters The Image Processi…

HTML 元素类型介绍

目录 1. 块级元素(Block-level Elements) 2. 行级元素(Inline Elements) 3. 行内块级元素(Inline-block Elements) 4. 表格相关元素 5. 列表相关元素 6. 表单相关元素 示例代码 示例效果 ​编辑 …

医疗数据质量安全,数据安全解决方案,医院关心的数据安全问题,信息安全方案(Word原件)

一、 数据安全背景 二、 风险分析 三、 解决方案 3.1方案设计 3.2敏感数据分类分级 3.4数据安全防御体系 3.4.1访问控制防护 3.4.2网络可信接入 3.4.3应用身份识别 3.4.4抵御SQL注入 3.4.5虚拟补丁防护 3.4.6阻断漏洞攻击 3.4.7权限细粒度管理 3.5规范数据运维管理…

华为昇腾 acl_pytorch

目录 sam部署教程: segment-anyghing地址: sam onnx地址: 报错: encode继续报错: sam部署教程: Ascend/ModelZoo-PyTorch - Gitee.com segment-anyghing地址: https://github.com/visher…