在使用 Git 进行版本控制时,.gitignore 文件是一个非常有用的工具,可以帮助我们忽略不需要跟踪的文件或文件夹。然而,有时我们需要忽略某个文件夹下的所有内容,但保留其中的某个子文件夹。本文将详细介绍如何实现这一需求,并解决修改 .gitignore 后如何生效的问题。

场景描述

假设我们的项目根目录下有一个 unpackage 文件夹,我们希望忽略 unpackage 文件夹下的所有文件和文件夹,但保留其中的 res 文件夹。也就是说,unpackage/res/ 需要被 Git 跟踪,而 unpackage/ 下的其他内容需要被忽略。

解决方案

在 .gitignore 文件中添加以下规则:

unpackage/*
!unpackage/res/

规则解释:

  1. unpackage/*:忽略 unpackage 文件夹下的所有文件和文件夹。

  2. !unpackage/res/:排除 unpackage/res/ 文件夹,即不忽略 res 文件夹及其内容。


修改 .gitignore 后如何生效

如果你之前已经在 .gitignore 文件中写了 unpackage/*,现在修改为上述规则后,需要执行以下步骤使更改生效:

1. 清除 Git 缓存

Git 会缓存已经跟踪的文件,即使它们现在被 .gitignore 规则匹配。我们需要清除缓存,让 Git 重新应用 .gitignore 规则。

运行以下命令:

git rm -r --cached unpackage/
git add .
git commit -m "Update .gitignore to exclude unpackage except res"

命令解释:

  • git rm -r --cached unpackage/:从 Git 缓存中移除 unpackage 文件夹的内容,但不会删除本地文件。

  • git add .:重新添加文件,应用新的 .gitignore 规则。

  • git commit:提交更改。

2. 检查是否生效

运行以下命令,检查 unpackage 文件夹的状态:

git status

你应该看到:

  • unpackage/res/ 被跟踪。

  • unpackage/ 下的其他文件或文件夹被忽略。

3. 推送更改(如果需要)

如果你在远程仓库中也需要这些更改,记得推送:

git push origin <branch-name>

注意事项

  1. 如果你之前已经将 unpackage/ 下的文件提交到了 Git 仓库,这些文件会保留在 Git 历史中。如果需要彻底从历史中删除,可以使用 git filter-repo 或 BFG Repo-Cleaner 工具。

  2. 如果 unpackage/res/ 下有子文件夹或文件需要被跟踪,Git 会自动跟踪它们,因为 res 文件夹本身没有被忽略。


总结

通过合理配置 .gitignore 文件,我们可以灵活地控制 Git 跟踪的文件和文件夹。本文介绍了如何忽略某个文件夹下的所有内容,但保留其中的指定子文件夹,并解决了修改 .gitignore 后如何生效的问题。希望这篇文章对你有所帮助!

 
 

如何正确配置 .gitignore 以忽略特定文件夹下的文件(除指定子文件夹外)的更多相关文章

  1. GIT 如何合并另一个远程Git仓库的文件到本地仓库里某个指定子文件夹并不丢失远程提交记录?

    问题背景:     最近在重新整理手中的一个项目,目前该项目分为PC项目,手机项目,某第三方接口项目,第三方接口服务项目和手机项目     因为之前规划的原因,原来的四个项目是分两个解决方案来管理的 ...

  2. c# 控制台应用程序批量修改文件夹下的后缀名(包括子文件夹)

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...

  3. c++读取文件夹及子文件夹数据

    这里有两种情况:读取文件夹下所有嵌套的子文件夹里的所有文件  和 读取文件夹下的指定子文件夹(或所有子文件夹里指定的文件名) <ps,里面和file文件有关的结构体类型和方法在 <io.h ...

  4. Python求取文件夹内的文件数量、子文件夹内的文件数量

      本文介绍基于Python语言,统计文件夹中文件数量:若其含有子文件夹,还将对各子文件夹中的文件数量一并进行统计的方法.   最近,需要统计多个文件夹内部的文件数量,包括其中所含子文件夹中的文件数量 ...

  5. 下面的程序段创建了BufferedReader类的对象in,以便读取本机c盘my文件夹下的文件1.txt。File构造函数中正确的路径和文件名的表示是( )。

    下面的程序段创建了BufferedReader类的对象in,以便读取本机c盘my文件夹下的文件1.txt.File构造函数中正确的路径和文件名的表示是(    ). ./表示当前项目的路径../表示当 ...

  6. 【转发】du命令 实现Linux 某个文件夹下的文件按大小排序

    1. df -lh 2. du -s /usr/* | sort -rn这是按字节排序 3. du -sh /usr/* | sort -rn这是按兆(M)来排序 4.选出排在前面的10个du -s ...

  7. tcl/tk实例详解——返回一个文件夹下所有文件的绝对路径

    http://blog.csdn.net/dulixin/article/details/2133840 #所有代码如下,使用注释的方式讲解脚本#修改好文件夹和保存结果路径,可以把本文件直接拷贝进tc ...

  8. (转) Ubuntu 更改文件夹及子文件夹权限

    Linux系统下如何修改文档及文件夹(含子文件夹)权限,我们来看一下. 一 介绍: 可以使用命令chmod来为文件或目录赋予权限.Linux/Unix 的档案存取权限分为三级 : 档案拥有者.群组.其 ...

  9. FILE文件删除操作(删除指定文件夹下所有文件和文件夹包括子文件夹下所有文件和文件夹),就是删除所有

    2018-11-05  19:42:08开始写 选择 删除 1.FileUtils.java类 import java.io.File;//导入包 import java.util.List;//导入 ...

  10. Java 遍历指定文件夹及子文件夹下的文件

    Java 遍历指定文件夹及子文件夹下的文件 /** * 遍历指定文件夹及子文件夹下的文件 * * @author testcs_dn * @date 2014年12月12日下午2:33:49 * @p ...

随机推荐

  1. PythonDay3Advance

    PythonDay3Advance 运算符 位运算符 进制: 将整数分了几种进制表示法 二进制:由0,1构成,逢2进1,以0b开头 八进制:由0,1,2,3,4,5,6,7构成,逢8进1,以0开头 十 ...

  2. jQuery 元素信息

    先贴出元素模型信息 1.获取内容区大小 css():返回值是带单位的(getComputedStyle(node).width) <script> $(function(){ consol ...

  3. 06C++顺序结构与程序IPO模式

    一.程序IPO模式 编程 IPO 是指输入.处理和输出(Input, Process, Output)的概念.在计算机编程中,IPO 是一种常用的设计模式,用于描述程序的基本流程.具体来说,IPO 指 ...

  4. 【Vue】vue基础学习笔记

    目录 基础 差值语法 模板语法 数据绑定 el与data的两种写法 el与data写法1 el写法2:挂载 data写法2:函数式写法 绑定样式 绑定class样式 绑定style样式 条件渲染 基础 ...

  5. html css使用特殊自定义字体避免侵权

    一般系统支持的网页常见中文字体有:宋体.雅黑.黑体.但是大多网站使用电脑自带微软雅黑(方正的)可能侵权 p { font-family: Arial,sans-serif; } 可免费商用字体百度自行 ...

  6. Qt编写地图综合应用27-点聚合

    一.前言 在地图上查询结果通常以标记点的形式展现,但是如果标记点较多,不仅会大大增加客户端的渲染时间,让客户端变得很卡,而且会让人产生密集恐惧症.为了解决这一问题,我们需要一种手段能在用户有限的可视区 ...

  7. 高通Android工程释放ADSP侧GPIO给AP侧(HLOS)解决uart只能收或者发,gpio 无法配置成输入或者输出

    在许多sensor的调试过程中总是会遇到各种GPIO被占用的情况,特别是以下几种情况:UART 只能发或收,GPIO 配置了pinctl output但是gpio依旧为输入. 1.判断GPIO口状态 ...

  8. Solution Set - “如果惊蛰随梦远走”

    目录 0.「UR #15」「UOJ #226」奥林匹克环城马拉松 1.「UR #22」「UOJ #682」月球铁轨 2.「NOI Simu.」箭头 3.「CF 830E」Perpetual Motio ...

  9. w3cschool-Apache Kafka 教程

    参考https://www.w3cschool.cn/apache_kafka/ Apache Kafka 基础 2021-07-27 16:23 更新 对于大数据,我们要考虑的问题有很多,首先海量数 ...

  10. Docker实践:Centos下安装Docker并简单的使用

    1 环境介绍 版本信息: [root@localhost]#  cat /proc/version Linux version 3.10.0-514.el7.x86_64 (builder@kbuil ...