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

「Git|场景案例」从项目中删除之前commit过的文件并且让git不追踪删除操作

本文主要介绍如何在git中删除文件但是让git不追踪这些删除操作

文章目录

  • 场景说明
  • 解决方案
    • 删除一个文件
    • 删除一个文件夹以及子文件夹

场景说明

自己在使用react开发一个包含大量媒体文件的网站时,项目初期临时将这些媒体文件都放在项目中,直接使用访问本地文件的方式读入媒体文件。

这样做会导致因为项目中包含大量媒体文件,本地开发时React Hot Loadercompiling的时候速度会非常慢,严重影响修改代码后在浏览器查看页面效果的效率。

但对于生产环境Build时,影响不大。所以考虑在将文件同步到代码仓库后,本地删除这些媒体文件,但是删除的操作不能让git同步到代码仓库,否则会导致生产环境pull下来的仓库里也没有媒体文件,影响业务使用。

所以解决问题的重点在于: 如何删除本地已经提交过的目录下的文件,但是让git不追踪这些删除操作(即,不显示在git的changes里面)

解决方案

gitignore可以ignore掉还没进到项目里的文件,或者是非删除操作的change,但是对于删除一个已经在git repo的文件,.gitignore不起作用。

关于git删除文件或者停止追踪文件的方法,可以有:

  • Ignore changes to untracked files by using a .gitignore file
  • Ignore changes to untracked files by using an exclude file
  • Stop tracking a file and ignore changes using git update-index
  • Stop tracking a file and ignore changes using git rm
    更多具体内容可以参考文档

删除一个文件

git自带的命令中可以使用git update-index --skip-worktree <file path>ignore掉指定的文件,执行命令之后再删除文件,git的changes中也不会列出这个文件被删除的change。

删除一个文件夹以及子文件夹

因为git update-index --skip-worktree是针对一个文件,所以对于一个文件夹下的文件和子文件夹的全部文件,就得需要配合其他linux命令来达成,如下:

  • 进入到要删除的文件夹:cd /path/to/folder/want/to/delete
  • 通过命令将文件夹下的全部文件都作为输入传到git update-index --skip-worktree命令:find . -maxdepth 1 -type d \( ! -name . \) -exec bash -c "cd '{}' && pwd && git ls-files -z ${pwd} | xargs -0 git update-index --skip-worktree" \;
  • 之后删除掉这个文件夹即可,git不会追踪这些删除

写文不易,如果对你有帮助的话,来一波点赞、收藏、关注吧~👇

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

相关文章:

  • 一款.NET Core开源的基于Vue+ElementUI开发的博客系统 - StarBlog
  • 用git stash暂存修改
  • 一个适合练手的接口测试实战项目——慕慕生鲜
  • window10/11 光学系统建模之Light Tools8.6 软件安装教程(亲测可用+附带免费资源可直接下载)
  • Vue3+ElementPlus el-date-picker时间选择器,设置最多选择60天区间内,必须选择大于今天
  • 2022年亚太杯APMCM数学建模大赛B题高速列车的优化设计求解全过程文档及程序
  • OSI网络分层模型
  • EOS区块链keosd的RPC API
  • React +AntD + From组件重复提交数据(已解决)
  • spring的简单使用(配合Druid操作数据库)
  • 10.20作业
  • 笔记1 Compute Shaders
  • IntelliJ IDEA 2023版本 Debug 时没有Force Step Into 按钮解决方法
  • 【2024秋招】用友后端BIP部门hr面-2023.8.31
  • [ Windows ] ping IP + Port 测试 ip 和 端口是否通畅
  • Golang协程的概念、用法、场景及案例
  • Redis 主从复制,哨兵,集群——(3)集群篇
  • Flink之Watermark水印、水位线
  • uni-app:对数组对象进行以具体某一项的分类处理
  • 顺序队列----数据结构
  • 【Python学习笔记】字符串格式化
  • RIP,EIGRP,OSPF区别
  • 驱动day2作业
  • MySQL基本操作之创建数据表
  • rk平台android12修改dp和喇叭同时输出声音
  • 经典网络模型
  • SystemVerilog Assertions应用指南 Chapter1.29“ disable iff构造
  • C++设计模式之MVC
  • Windows 下Tomcat监测重启
  • 数据库管理-第112期 Oracle Exadata 03-网络与ILOM(20231020)