关于git删除仓库中原本应该忽略的文件的研究

开门见山,先抛出一个结论:

任何被提交到远程仓库中的数据,都不能被彻底删除,只要提交上去了,就会永远留存。

任何被提交到远程仓库中的数据,都不能被彻底删除,只要提交上去了,就会永远留存。

任何被提交到远程仓库中的数据,都不能被彻底删除,只要提交上去了,就会永远留存。

有些朋友可能会说:不对啊,有个命令[git rm -r --cached xxx],可以删除不小心提交的应该忽略的文件,只要执行了上面的命令之后,commit,然后push到远程仓库,远程仓库中的相关文件就会被删除了。

那我只能告诉你,你删除的只是一个指向文件blob的指针而已,blob本身会永远留在仓库里,除非你把所有指向这个blob的引用都删除,然后再执行git gc利用git的空引用回收机制将blob删除(这将是一个非常非常非常麻烦的活,相信我,你绝对不想干的。)

那么我们提交了应该忽略的文件,一般都是因为前期设置的.gitignore有漏洞,让原本应该忽略的文件钻了空子,所以一开始进行.gitignore文件设置时一定要本着能多不少,覆盖面能多大有多大的原则,因为如果发现有些文件可以提交但却被设置忽略,大不了改下.gitignore给这样的文件开个绿灯,让其能够正常提交上去就行,但如果是一开始时.gitignore设置的太少,导致了一大堆文件钻。空子,那就是一件很悲催的事情了,虽然你能够在下次提交时删除对于这些文件的引用,然后修改gitignore文件让其不再追踪那些应该忽略的文件,但你之前错误提交的那批文件的blob,是注定要永远留在仓库里面了。

这里我想给这些的文件取一个形象的名字——疤痕文件。

好了,下面我们讲一下如果我们确实不小心提交了应该忽略的文件的情况,应该如何处理:

说白了就是以下几个命令:

git rm -r --cached fileName (强烈建议在执行这个命令之前,先带上参数-n,也就是git rm -r -n --cached fileName,-n是参数--dry-run的短命令形式,意思是只预览当前命令将删除的文件,而非实际删除,要养成先预览再删除的习惯,防止误删。)

git commit -m "delete ignore file"(提交删除,写好备注)

git push(将本次提交推送到远程仓库)

然后只要记住赶紧修改.gitignore文件将这个文件加入到忽略列表,然后提交.gitignore文件就行了。

接下来我们验证下经过删除之后,远程仓库中的数据发生了什么变化:

使用git log命令查看近期提交:

可以看见倒数第二次提交为提交了一个原本应该忽略的文件,最后的提交为删除了这个应忽略的文件,我们先看一下最后一次提交指向的内容:

通过git cat-file -p [commit哈希前4位]命令查看最后一次commit指向的tree,再顺藤摸瓜查看tree所指向的blob,发现TestShoudIgnore.dll这个应该忽略的文件确实被删除了:

我们再查看倒数第二次的commit:

所以最后总结一下,在项目的前期对于.gitignore文件的编辑一定要秉承着能多不少的原则,不然就很容易给仓库留下疤痕文件了。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三、04 nginx负载均衡

目录 简介1、准备三台主机且都安装了ngix2、先配置第一个服务主机配置文件nginx.conf制作页面写入页面内容检测语法&重启nginx查看第一个服务器再用同样样的方法 搭建第一个web 服务即可可以使用scp 直接复制 第一个web 服务器的文件配置文件第二个页面的 html 代码 配置代…

分别取出一个时间序列中的年份,月份和日期

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 只留下时间序列中 各行元素的年、月或日 结果的数据类型是序列 Series.dt.year Series.dt.month Series.dt.day [太阳]选择题 以下关于代码输出结果的说法中正确的是? import pandas as pd ts…

“超人练习法”系列09:耶克斯–多德森定律

01 你现有水平和学习风格 搞明白自己是个大事,搞不明白就糊涂一辈子。 首先,要弄清楚自己现在是个啥水平,有啥技能可以拿出来的,然后再定个目标,知道自己想往哪方面努力。 你擅长的学习方式是啥呢?是那种…

第十五届蓝桥杯单片机组备赛——独立键盘矩阵键盘

文章目录 一、按键原理二、独立键盘&矩阵键盘2.1 独立按键2.2 矩阵键盘 一、按键原理 原理很简单,当我们没有按下SW2时,由于上拉电阻得作用,使得输入引脚得信号为高电平,当按下按键后,引脚直接接地,输入…

虹科分享 | PCAN工具:强大的CAN通讯解决方案,你了解多少?

导读:在当今的汽车和工业自动化领域,可靠的通讯系统至关重要,PCAN工具为这些应用提供了强大的支持。本文将介绍PCAN工具的功能、应用和优势,以帮助您根据实际需求选择合适的工具和配件。 PCAN 网络允许 PCAN 应用程序&#xff08…

redis原理(二)数据结构

redis可以存储键与5种不同数据结构类型之间的映射: String类型的底层实现只有一种数据结构,也就是动态字符串。而List、Hash、Set、ZSet都由两种底层数据结构实现。通常我们把这四种类型称为集合类型,它们的特点是一个键对应了一个集合的数据…

【MATLAB】【数字信号处理】产生系统的单位冲激响应h(t)与H(z)零极点分布

一、实验目的与要求 产生h(t) 与H(z) 零极点分布 二、实验仪器 微机,仿真软件MATLAB 2022a 三、实验内容与测试结果 1.已知描述连续系统的微分方程为y(t)5y(t)6y(t)2x(t)8x(t) ,计算系统的单位冲激响应h(t) 程序如下: clear all; ts0;…

JavaScript采集各大电商平台关于预制菜酸菜鱼销售量

因为我喜欢吃酸菜鱼,但是自己弄又弄不来,想从网上找找看看,但是种类多,自己逐个选择又太浪费时间。索性利用自己专业爬虫知识,一边检验我最近代码水平,另一方面还能选择到满意的年货。过去写个各大平台预制…

centos7 arm服务器编译安装gcc 8.2

前言 当前电脑的gcc版本为4.8.5,但是在编译其他依赖包的时候,出现各种奇怪的问题,会莫名其妙的中断编译。本地文章讲解如何自编译安装gcc,替换系统自带的gcc。 环境准备 gcc 需要 8.2:下载地址 开始编译 1、解压gcc…

医疗器械网络安全风险评定CVSS打分

为了完成医疗器械软件的网络安全风险评定相关文档,需要进行CVSS评分,这个评分对于第一次做的人来说感觉还是有些迷惑的,查了一些资料,留作参考。 CVSS 指的是 Common Vulnerability Scoring System,即通用漏洞评分系统…

QLExpress和Groovy对比

原理 Groovy groovy基于JVM运行。 编译时:将源文件编译成class文件后,用java的classLoader加载;运行时:直接用groovy classLoader加载 QLExpress QLExpress将文本解析成AST,用java对象表达后执行。 特点 Groo…

C++命名空间的using声明

在前边的C讲解中,使用输入输出流cin和cout前要加std::,每次前边都要加就会很麻烦。解决这个问题,我们就要了解一下命名空间和using声明。  命名空间会限定作用域具体格式及使用参照C入门讲解命名空间,上边的cin和cout就是声明在s…

大屏项目:react中实现3d效果的环形图包括指引线

参考链接3d环形图 3d效果的环形图 项目需求实现方式指引线(线的样式字体颜色) 项目需求 需要在大屏上实现一个3d的环形图,并且自带指引线,指引线的颜色和每段数据的颜色一样,文本内容变成白色,数字内容变…

最值得推荐的10个免费PDF转Word的方法

PDF转Word是一项很常见的操作,将PDF文件转换为Word文档可以方便我们对文件进行编辑和修改,而且Word格式也更加好打印。 最值得推荐的10个免费PDF转Word的方法 PDF 文件格式在很多场合都被广泛使用,但有时候我们需要修改 PDF 文件内容并保存&…

抖店入驻+运营全方位指导,开店篇!无货源/有货源统统适用

我是王路飞。 关于抖店的入驻和运营教程,准备出一个比较详细、系统的全方位指导内容,感兴趣的可以持续关注下。 不管你做的是无货源还是有货源模式,核心思路都是一样的,统统适用。 这篇文章,先给你们分享下抖店的入…

LLM之RAG实战(十五)| RAG的自动源引文验证技术

​ 在过去的一年里,检索增强生成(RAG)已经成为一种基于LLM的流行架构,旨在解决在基于知识的LLM最常见的挑战之一,可怕的幻觉。 一、RAG如何解决幻觉? RAG Pipeline包括两个关键组件:&…

Java零基础教学文档servlet(1)

【Web开发和HTTP协议】 1. Web开发概述 1.1 web概述 万维网(英语:World Wide Web)亦作WWW、Web、全球广域网,是一个透过互联网访问的,由许多互相链接的超文本组成的信息系统。英国科学家蒂姆伯纳斯-李于1989年发明了…

类脑研究之脑组成及神经系统相关理论!大脑是什么?大脑和脑有什么区别?大脑皮层和脑膜什么关系?人的神经系统有哪些?

目录 1 引言2 神经系统3 脑组成3.1 大脑成分3.2 大脑外部:脑膜3.3 大脑中部:大脑皮层3.4 大脑内部3.5 脑干3.6 小脑 1 引言 为了深入研究类脑,必须了解大脑的结构和机制。从神经系统分级和脑组成两个角度出发,详细介绍了大脑的生…

1.如何记录每个变量携带的数据:DataFrame与Series

序列格式和列表区别:序列格式可以直接汇总:均值,总和,百分位数等 DataFrame Series

[链路层] 点对点协议 PPP

目录 1、PPP协议的特点 2、PPP协议的组成和帧格式 3、PPP协议的工作状态 目前使用得最广泛的数据链路层协议是点对点协议PPP(Point-to-Point Protocol)。 1、PPP协议的特点 我们知道,互联网用户通常都要连接到某个 ISP 才能接入到互联网。PPP 协议就是用户计算机…