热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

gitignore删除文件夹中的所有文件,但保持文件夹结构

如何解决《gitignore删除文件夹中的所有文件,但保持文件夹结构》经验,为你挑选了1个好方法。

我具有以下文件夹结构:

/foo/
/foo/test.txt
/foo/.gitkeep
/foo/bar/test.txt
/foo/bar/.gitkeep
/foo/bar/baz/test.txt
/foo/bar/baz/.gitkeep

现在,我想排除“ foo”文件夹中的所有文件及其子文件夹(和子子文件夹)中的所有文件,但不包括所有.gitkeeps(以便保留文件夹结构)。这也应该适用于3个以上级别的子文件夹。

以下gitignore-rules起作用:

/foo/**
!/foo/**/
!/foo/**/.gitkeep

有人可以解释一下,这为什么起作用吗?有没有更干净的方法可以做到这一点?



1> VonC..:

规则很简单:

如果排除该文件的父目录,则无法重新包含该文件。

这就是为什么你需要

递归地忽略文件和文件夹:

/foo/**

(如果只忽略/foo/,即文件夹,那么将不使用任何数量的“ !”排除规则,因为foo/文件夹本身将被忽略:Git将在此处停止)

然后从忽略规则中排除文件夹:

!/foo/**/

在将文件列入白名单之前.gitkeep

!/foo/**/.gitkeep

.gitkeep是可行的,因为父文件夹已从忽略规则中排除。

与伯纳多(Bernardo)的原始建议相反(在他编辑之前):

/foo/** 
!**/.gitkeep

如果没有从/**忽略规则中排除文件夹,则文件的排除规则无效。

您可以使用以下方法进行检查:

git check-ignore -v -- /path/to/.gitkeep

如scm中所述.gitignore

使用“ *”与“ **” 相同

使用!.gitkeep(不带/锚)将递归排除该文件。

在这两种情况下,“ recursively”是解释为什么可以应用排除规则的关键术语:如果忽略文件夹(如./foo/),则将无法排除该文件夹中的任何内容。
但是,如果您递归地***)忽略元素(文件和文件夹),从gitignore规则中排除文件夹(再次通过递归规则!*),可以排除(白名单)文件。


推荐阅读
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • golang常用库:配置文件解析库/管理工具viper使用
    golang常用库:配置文件解析库管理工具-viper使用-一、viper简介viper配置管理解析库,是由大神SteveFrancia开发,他在google领导着golang的 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 本文详细介绍了如何在 Spring Boot 应用中通过 @PropertySource 注解读取非默认配置文件,包括配置文件的创建、映射类的设计以及确保 Spring 容器能够正确加载这些配置的方法。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • Navicat Premium 15 安装指南及数据库连接配置
    本文详细介绍 Navicat Premium 15 的安装步骤及其对多种数据库(如 MySQL 和 Oracle)的支持,帮助用户顺利完成软件的安装与激活。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 本文介绍了如何使用 Spring Boot DevTools 实现应用程序在开发过程中自动重启。这一特性显著提高了开发效率,特别是在集成开发环境(IDE)中工作时,能够提供快速的反馈循环。默认情况下,DevTools 会监控类路径上的文件变化,并根据需要触发应用重启。 ... [详细]
  • 三星W799在2011年的表现堪称经典,以其独特的双屏设计和强大的功能引领了双模手机的潮流。本文详细介绍其配置、功能及锁屏设置。 ... [详细]
author-avatar
mizrke
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有