关于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文件的编辑一定要秉承着能多不少的原则,不然就很容易给仓库留下疤痕文件了。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

centos7 arm服务器编译安装gcc 8.2

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

服务器 conda update 失败解决方法

1. 强制 conda update 租借一台服务器,发现 conda 版本是4.10.3,需要升级,使用了如下命令都没有效果,仍然是一样的版本 conda update conda update --all conda update -n base -c defaults conda最后强制用conda-forge通道更新…

基于Java SSM框架实现学生成绩管理系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现学生成绩管理系统演示 摘要 学生成绩是高校人才培养计划的重要组成部分,是实现人才培养目标、培养学生科研能力与创新思维、检验学生综合素质与实践能力的重要手段与综合性实践教学环节。而学生所在学院多采用半手工管理学生成绩的方式&#…

linux命令太多记不住吗?怎么办 ?于是推出了这样一套教程。

1.帮助命令 1.1 help命令 #语法格式: 命令 --help #作用: 查看某个命令的帮助信息 # 示例: # ls --help 查看ls命令的帮助信息# netstat --help 查看netstat命令的帮助信息1.2 man命令 #语法格式: man 命令 #作用: 查看某个命令的帮助手册 # 示例: …

Codeforces Round 918 (Div. 4)补题

Odd One Out&#xff08;Problem - A - Codeforces&#xff09; 题目大意&#xff1a;有三个数&#xff0c;其中两个相同&#xff0c;找出不同的那个数。 #include<bits/stdc.h> using namespace std; int main() {int t;scanf("%d",&t);while(t--){vect…

电脑安装 Python提示“api-ms-win-crt-process-l1-1-0.dll文件丢失,程序无法启动”,快速修复方法,完美解决

在windows 10系统安装完python后&#xff0c;启动的时候&#xff0c;Windows会弹出错误提示框“无法启动此程序&#xff0c;因为计算机中丢失了api-ms-win-crt-process-l1-1-0.dll&#xff0c;尝试重新安装该程序以解决此问题。” api-ms-win-crt-process-l1-1-0.dll是一个动态…

TEMU、亚马逊、shein平台崛起迅猛,掌握自养号测评必备运营攻略

2023年12月&#xff0c;SimilarWeb发布的数据显示&#xff0c;TEMU的独立访客数量达到4.67亿&#xff0c;与Aliexpress持平&#xff0c;全球排名第二。亚马逊以26.59亿用户位居第一&#xff0c;而SHEIN则拥有1.723亿用户&#xff0c;排名第三。 然而&#xff0c;仅仅六个月前的…

centos8部署MySQL5.7故障集

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 在centos8系统上安装MySQL&#xff0c;使用的是centos7上安装MySQL的脚本&#xff0c;出现了以下问题&#xff0c;以做记录&…

vue 组件 import make sure to provide the “name“ option.

百度了好多结果&#xff0c;都过时了&#xff0c;例如&#xff1a; 模块引入是否加{} 再比如&#xff1a; 对于递归组件&#xff0c;请确保提供“name”选项。 出现该错误情况之一&#xff1a; 错误由未正确引入组件或子组件引起&#xff0c;如element-ui中form表单组件未引…

simulink之Fixed-Point Numbers

Fixed-Point Numbers 定点数及其数据类型的特征在于它们的字大小&#xff08;以位为单位&#xff09;、二进制点以及它们是有符号的还是无符号的。定点设计器™ 软件支持整数和定点数。这些数据类型之间的主要区别在于它们的二进制点。 注意&#xff1a;定点数字的字大小最多…

redis原理(二)数据结构

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

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

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

CLion中想要在一个项目中有多个C源文件(有多个main函数)

我们知道&#xff0c;一个项目中只能有一个main()函数&#xff0c;但是我们不想分开创建这么多个C源文件&#xff0c;我们想要在一个工程中允许存在多个main方法了&#xff0c;而且可以独立运行&#xff0c;那么只需要以下步骤即可&#xff1a; 1&#xff09;在 File - Settin…

芯课堂 | 华芯微特MCU在PCB板级设计中对ISP引脚的应用

1.应用描述 ISP&#xff08;In System Programming&#xff09;&#xff0c;在系统编程&#xff0c;使用片内驻留出厂引导程序&#xff08;BootROM&#xff09;配合UART / SPI等外设进行烧录。 华芯微特全系MCU的ISP操作说明&#xff1a;当芯片上电后检测到 ISP 引脚持续 5ms…

MeshLab生成分形地形

文章目录 分型地形脊状多重分形其他地形 分型地形 分形地形是一种较为复杂的几何对象&#xff0c;MeshLab提供了下列五种地形生成算法&#xff0c;并且贴心地给出了每种算法相对较好的参数。 算法SeedOctaves缺项性分形增量偏移增益fBM(fractal Brownian Motion)11021.2--Sta…

elasticsearch[二]-DSL查询语法:全文检索、精准查询(term/range)、地理坐标查询(矩阵、范围)、复合查询(相关性算法)、布尔查询

ES-DSL查询语法&#xff08;全文检索、精准查询、地理坐标查询&#xff09; 1.DSL查询文档 elasticsearch 的查询依然是基于 JSON 风格的 DSL 来实现的。 1.1.DSL 查询分类 Elasticsearch 提供了基于 JSON 的 DSL&#xff08;Domain Specific Language&#xff09;来定义查…

15-deoxy-Δ12,14-PGJ2 ELISA kit,可用于类花生酸研究

15-deoxy-Δ12,14-PGJ2&#xff08;15-d-PGJ2&#xff09;是PGD2的最终脱水产物之一&#xff0c;通过中间体Δ12-PGJ2形成。生理条件下&#xff0c;15-d-PGJ2存在于体液中&#xff0c;浓度介于10^(-12)至10^(-9)M&#xff0c;但在感染和炎症等应激条件下会急剧增加。在细胞类型…

【计算机二级考试C语言】C常量

C 常量 常量是固定值&#xff0c;在程序执行期间不会改变。这些固定的值&#xff0c;又叫做字面量。 常量可以是任何的基本数据类型&#xff0c;比如整数常量、浮点常量、字符常量&#xff0c;或字符串字面值&#xff0c;也有枚举常量。 常量就像是常规的变量&#xff0c;只…

赛氪网成功加入“京津冀翻译教育联盟”理事单位

近日&#xff0c;赛氪网在第五届“京津冀翻译教育联盟理事会”上通过理事会会议投票&#xff0c;成功加入“京津冀翻译教育联盟”理事单位。这一重要举措将进一步推动赛氪网在翻译教育领域的发展和影响力&#xff0c;为培养更多优秀的翻译人才做出贡献。 2024 年 1 月 13 日下…