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

【已解决】Git:为什么 .gitignore 不生效?如何停止跟踪已提交文件并阻止推送?

你可能遇到的问题

你已经提交了某个文件夹(如 dataset)到 Git 仓库,之后修改了它,但发现修改内容被 Git 持续跟踪,无法通过 .gitignore 忽略。尝试在 .gitignore 中添加规则后,修改的文件仍然显示为"已修改",甚至可能不小心推送到远程。
为什么?因为 .gitignore 只能忽略 从未被 Git 跟踪的文件,而已经提交的文件需要手动停止跟踪


核心原因:已提交的文件始终被 Git 跟踪

假设你之前已经将 dataset 文件夹提交到 Git:

  • 即使后续将 dataset 写入 .gitignore,Git 仍会持续跟踪它的改动(除非你手动停止跟踪)。
  • .gitignore 仅阻止 Git 对未提交的文件进行监控

分步解决方案:停止跟踪 dataset 文件夹

以下是解决此问题的完整步骤,确保本地文件不再被 Git 追踪,并阻止其推送远程:

1. 编辑 .gitignore 文件

在项目根目录的 .gitignore 文件中添加以下规则:

# 忽略整个 dataset 文件夹及其内容
/dataset/

# 仅忽略 dataset 文件夹下所有子文件(保留文件夹本身)
dataset/*

⚠️ 注意:

  • 文件路径必须精确匹配,例如 dataset/(末尾斜杠表示文件夹)。
  • 如果 .gitignore 文件存在于子目录中,需调整路径为相对路径。

2. 停止 Git 跟踪已提交的文件

即使你编辑了 .gitignore,Git 仍会追踪 dataset 的历史提交。必须使用以下命令从 Git 索引中删除它(保留本地文件):

git rm --cached -r dataset/
  • --cached: 告诉 Git 仅删除索引中的记录,保留本地文件。
  • -r: 递归删除子目录(如果 dataset 包含子文件夹)。

3. 提交配置更改

.gitignore 的修改和停止跟踪的更改提交到本地仓库:

git add .gitignore        # 添加 .gitignore 的修改
git commit -m "停止跟踪 dataset 文件夹"

这时,dataset 会被移出 Git 管理范围,后续修改不会被 Git 监控。


4. 验证是否生效

运行以下命令确认:

git status
  • 如果 dataset 目录不再显示为已修改或待提交,说明操作成功。
  • 检查 .gitignore 有效性:
git check-ignore -v dataset/yourfile.txt

如果输出忽略规则路径(如 .gitignore:1:*.txt). 则说明规则生效。


常见问题与解决方案

Q:修改 .gitignore 后,依然显示文件被修改?

A:

  1. 检查路径是否正确,例如 dataset 是否拼写错误。
  2. 确保执行了 git rm --cached 命令。
  3. 重启终端或执行 git reset 清除缓存:
git reset
Q:如何完全删除远程仓库中的 dataset

A:

  1. 执行上述所有步骤后,执行强制推送清理远程:
git push origin --force

⚠️ 谨慎操作:如团队协作中,请提前通知其他成员。

Q:只是临时不想推送 dataset 修改,后续可能想恢复?

A:

  • 使用 git stash 暂存更改:
git stash save "临时保存 dataset 修改"
  • 需要恢复时:
git stash pop
Q:如何避免未来 dataset 被误提交?

A:在 .gitignore 中添加后,勿运行以下命令

git add dataset
git add .                   # 不要递归添加当前目录

总结

通过以下流程,你可以完全控制 Git 对 dataset 的跟踪:

  1. 编写 .gitignore 规则 → 2. 停止 Git 跟踪 → 3. 提交配置 → 4. 验证与清理

通过此方法,你可以灵活管理本地文件与远程仓库的关系,避免误操作导致敏感数据或大文件泄漏到仓库中。

相关文章:

【已解决】Git:为什么 .gitignore 不生效?如何停止跟踪已提交文件并阻止推送?

你可能遇到的问题 你已经提交了某个文件夹(如 dataset)到 Git 仓库,之后修改了它,但发现修改内容被 Git 持续跟踪,无法通过 .gitignore 忽略。尝试在 .gitignore 中添加规则后,修改的文件仍然显示为"…...

WebRTC协议全面教程:原理、应用与优化指南

一、WebRTC协议概述 **WebRTC(Web Real-Time Communication)**是一种开源的实时通信协议,支持浏览器和移动应用直接进行音频、视频及数据传输,无需插件或第三方软件。其核心特性包括: P2P传输:点对点直连…...

深度学习框架对比评测:TensorFlow、PyTorch、PaddlePaddle与MXNet的技术演进与应用实践

本文针对当前主流的四大深度学习框架(TensorFlow 2.15、PyTorch 2.2、PaddlePaddle 2.5、MXNet 1.9),从架构设计、开发效率、训练性能、部署能力及生态系统等维度展开系统性评测。通过图像分类、自然语言处理、强化学习三类典型任务的基准测试…...

Ethernet(以太网)详解

一、Ethernet的定义与核心特性 以太网(Ethernet)是一种 基于IEEE 802.3标准的局域网(LAN)技术,用于设备间通过有线或光纤介质进行数据通信。其核心特性包括: 标准化:遵循IEEE 802.3系列协议&am…...

Python正则表达式(二)

目录 六、re.findall()函数和分组 1、0/1分组情况 2、多分组情况 七、或“|”的用法 1、作用域 2、用法 八、贪婪模式和懒惰模式 1、量词的贪婪模式 2、量词的懒惰模式 九、匹配对象 1、相关函数 六、re.findall()函数和分组 1、0/1分组情况 在正则表达式中&#x…...

学习《JS数据结构与算法》

博主这些日子去实习所以断更了,现在回归想接着学习一下数据结构与算法,学校也有上这门课,但博主去实习很多课都没上,现在自己看书学习一下,每天记录一下自己学习进度规范一下自己,需要这本书的可以私聊博主…...

图解AUTOSAR_SWS_FlashDriver

AUTOSAR Flash驱动(FLS)模块详解 AUTOSAR基础软件存储抽象层组件详细解析 目录 1. 概述 1.1. Flash驱动模块简介1.2. 功能和作用2. 架构设计 2.1. 模块架构2.2. API接口设计2.3. 状态机设计2.4. 异步操作时序2.5. 配置结构2.6. 任务处理流程3. 总结 3.1. 设计优势3.2. 应用场景…...

哪吒汽车:一边熬夜蹦迪,一边找药投医

两年前,威马CEO沈晖发了个短视频,内容是“活下去,像牲口一样活下去”。 如今最能体会沈晖当时心情的,估计就是方运舟了。 作为哪吒汽车创始人兼董事长,他连续多次被限高,为了让哪吒汽车活下去&#xff0c…...

Linux一步部署主DNS服务器

​ #!/bin/bash #部署DHCP服务 #userli 20250319if [ "$USER" ! "root" ]then echo"错误:非root用户,权限不足!"exit 0fi#防火墙与高级权限 systemctl stop firewalld && systemctl disable firewalld…...

使用django的DRF业务逻辑应该放在序列化器类还是模型类

在 Django REST Framework (DRF) 中,序列化器和模型类有明确的职责划分。虽然序列化器在反序列化时负责接收、验证和转换数据,但模型类仍是整个系统的核心,承担更底层的职责。以下是详细解析: 一、序列化器 vs 模型类&#xff1a…...

图片隐私清理工具

图片隐私清理助手:一键清除图片敏感信息的神器 在数字时代,我们每天都会拍摄和分享大量图片,但你是否注意过这些图片中可能暗藏隐私信息?相机的GPS定位、拍摄参数等EXIF数据,都可能在不经意间泄露你的隐私。今天介绍的…...

【UE5】摄像机晃动

目录 效果 步骤 一、游戏中晃动视角 二、Sequence中晃动视角 效果 步骤 一、游戏中晃动视角 1. 新建一个蓝图,父类选择“CameraShakeBase” 这里命名为“BP_MyCameraShake” 打开“BP_MyCameraShake”,根晃动模式这里设置为“Perlin噪点摄像机晃…...

类和对象—继承(1)

目录 1、继承1.1、继承的概念1.2、继承的语法 2、子类访问父类成员2.1、子类中访问父类的成员变量2.2、子类中访问父类的成员方法2.3、super 关键字 3、子类构造方法 1、继承 在 Java 中,类对现实中的实体进行描述,而类实例化的对象用来表示现实中的实体…...

CCF CSP 第33次(2024.03)(2_相似度计算_C++)(字符串中字母大小写转换+哈希集合)

CCF CSP 第33次(2024.03)(2_相似度计算_C) 题目背景:题目描述:输入格式:输出格式:样例1输入:样例1输出:样例1解释:样例2输入:样例2输出…...

试试智能体工作流,自动化搞定运维故障排查

APO 1.5.0版本全新推出的智能体工作流功能,让运维经验不再零散!只需将日常的运维操作和故障排查经验转化为标准化流程,就能一键复用,效率翻倍,从此告别重复劳动,把时间留给更有价值的创新工作。更贴心的是&…...

Linux应用:线程基础

线程介绍 进程是程序在操作系统里的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的一个执行单元,是 CPU 调度和分派的基本单位。一个进程可以包含多个线程,这些线程共享进程的资源,如内存空间、文…...

ngx_conf_parse

配置文件 #user nobody; worker_processes 1;#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info;#pid logs/nginx.pid;events {worker_connections 1024; }http {#include mime.types;#default_type appli…...

要创建一个基于Spring Boot、Thymeleaf、MyBatis Plus和MySQL的简单表格增删改查(CRUD)项目

文章目录 要创建一个基于Spring Boot、Thymeleaf、MyBatis Plus和MySQL的简单表格增删改查(CRUD)项目1. 创建Spring Boot项目2.项目配置2.1 依赖yml配置数据库表配置 3.代码实现3.1 实体类3.2 数据访问层3.3 服务层3.4 控制层3.5 Thymeleaf模板 要创建一…...

解决Cubemx生产的 .ioc文件不能外部打开的方法

正常来说,cubemx生成的文件会有图标 但是当图标白色的时候,无法通过直接点击这个文件进入cubemx 1.首先检查java环境是不是装的JAVA8,如果是的话进行第二步操作; 2.重新安装一次cubemx,在安装的时候选择为我安装&…...

在 Linux(Ubuntu / CentOS 7)上快速搭建我的世界 MineCraft 服务器,并实现远程联机,详细教程

Linux 部署 MineCraft 服务器 详细教程(丐版,无需云服务器) 一、虚拟机 Ubuntu 部署二、下载 Minecraft 服务端三、安装 JRE 21四、安装 MCS manager 面板五、搭建服务器六、本地测试连接七、下载樱花,实现内网穿透,邀…...

Transformer | 一文了解:缩放、批量、多头、掩码、交叉注意力机制(Attention)

源自: AINLPer(每日干货分享!!) 编辑: ShuYini 校稿: ShuYini 时间: 2025-3-27 更多:>>>>专注大模型/AIGC、学术前沿的知识分享! 引言 之前的文章:2万字长文!一文了解…...

原型验证后客户推翻原有需求,如何止损

原型验证后客户推翻原有需求时止损的有效方法包括:迅速评估影响范围、立即开展沟通确认、调整项目计划和资源配置、更新变更管理流程、协商成本分担机制。其中,迅速评估影响范围是关键,项目团队必须立即明确此次变更的具体影响,包…...

六、小白学JAVA-类和对象

1、什么是类和对象 人类---类:走路、说话、学习 人---对象:具体到某个人,就是对象,走路、说话、学习,每个人都是独特的人。 public class Person {String name;public void walk() {System.out.println("我会走…...

CMLINK APN 手动设置

以下是针对 CMLINK 的 APN设置 的详细指南,基于常见配置需求: CMLINK APN 手动设置参数 参数项值说明名称CMLINK (自定义)任意命名(如 CMLINK、CM Internet 等),建议使用ASCII字符,无特殊符号。APNcm.com …...

深入探索 Python 中的 asyncio:异步编程的利器

在当今的软件开发中,异步编程已经成为了提高程序性能和响应能力的重要手段之一。Python 作为一种广泛使用的编程语言,提供了强大的异步编程支持,而 asyncio 库则是其中的核心。本文将深入探讨 asyncio 的基本概念、使用方法以及一些高级特性&…...

STM32硬件IIC与OLED使用

OLED屏幕介绍 OLED即有机发光管(Organic Light-Emitting Diode,OLED)。OLED显示技术具有自发光、广视角、几乎无穷高的对比度、较低功耗、极高反应速度、可用于绕曲性面板、使用温度范围广、构造及制程简单等有点,被认为是下一代的平面显示屏新兴应用技术 OLED显示…...

基于Spring Boot的电动车智能充电服务平台的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...

十、JavaScript对象

一、对象 创建对象的方法有三种:字面量、new、构造函数。 1.利用字面量创建对象 花括号{}里面包含了表达这个具体事物(对象)的属性和方法 // 1.利用对象字面量创建对象{}// var obj {}; // 创建了一个空的对象var obj {uname: black,ag…...

FFmpeg开发学习:音视频封装

1.基本流程 1.输入参数 输出文件路径 char *output 视频编码参数 AVCodecParameters *video_par 音频编码参数 AVCodecParameters *audio_par 数据包 AVPacket *packets[] 2.封装流程 (1)创建输出的上下文AVFormatContext指针 AVFormatContext *out_fm…...

hackmyvm-reversteg

arp-scan -l nmap -sS -v 192.168.222.45 在源码中可以看到 根据下面的提示可以猜测117db0148dc179a2c2245c5a30e63ab0是一个图像文件 将图片下载到本地 隐写术 在两张图片上使用strings,发现有一些可打印的字符串 strings 117db0148dc179a2c2245c5a30e63ab0.jpg base64解码…...