.gitignore排除(不忽略)二级以上目录下的文件或目录
在.gitignore中,结合使用/*
和!filename
的语法,可以达到除特定文件或目录外全部忽略的目的。但当希望不忽略的文件或目录在二级或多级目录下时,如果这样写
/*
!/sub/subsub/
是不能达到预期效果的,这会导致根目录下的全部文件被忽略,包括/sub/subsub/。因为.gitignore语法中,!filename
只能对同级的/*
生效,因此如果要在根目录中排除多级目录中的文件,需要重复地指明每一级目录的忽略规则。下面以忽略根目录中的全部文件,但不忽略/1st/2nd/目录中的tgt文件为例:
/*
!/1st/2nd/tgt #Wrong! Still ignored.
/*
!/1st/
/1st/*
!/1st/2nd/
/1st/2nd/*
!/1st/2nd/tgt
#Correct! Specify rules for each directory.
当目录变得足够深,或者这样的目录很多时,可以预料编写.gitignore的工作会变得极其繁复而易错。为此,我写了一段Javascript脚本以自动化这一流程:
str => {
let arr = str.split("/");
arr = arr.map((e, i) => arr.slice(0, i+1).join("/"));
arr.shift();
const trail = `!${arr.pop()}`;
arr = arr.map(e => `!${e}/\n${e}/*\n`);
return arr.join("") + trail;
}
使用示例:
(str => {
let arr = str.split("/");
arr = arr.map((e, i) => arr.slice(0, i+1).join("/"));
arr.shift();
const trail = `!${arr.pop()}`;
arr = arr.map(e => `!${e}/\n${e}/*\n`);
return arr.join("") + trail;
})("/1st/2nd/tgt")
/*
Output:
!/1st/
/1st/*
!/1st/2nd/
/1st/2nd/*
!/1st/2nd/tgt
*/
.gitignore排除(不忽略)二级以上目录下的文件或目录的更多相关文章
- 9.proc目录下的文件和目录详解
1./proc目录下的文件和目录详解 /proc:虚拟目录.是内存的映射,内核和进程的虚拟文件系统目录,每个进程会生成1个pid,而每个进程都有1个目录. /proc/Version:内核版本 /pr ...
- 8.var目录下的文件和目录详解
1./var目录下的文件和目录详解. /var (该目录存放的是不断扩充且经常修改的目录,包括各种日志文件或者pid文件,存放linux的启动日志和正在运行的程序目录(变化的目录:一般是日志文件,ca ...
- python_自动查找指定目录下的文件或目录的方法
代码如下 import os def find_file(search_path, file_type="file", filename=None, file_startswith ...
- Golang获取目录下的文件及目录信息
一.获取当前目录下的文件或目录信息(不包含多级子目录) func main() { pwd,_ := os.Getwd() //获取当前目录 //获取文件或目录相关信息 fileInfoList ...
- C#递归搜索指定目录下的文件或目录
诚然可以使用现成的Directory类下的GetFiles.GetDirectories.GetFileSystemEntries这几个方法实现同样的功能,但请相信我不是蛋疼,原因是这几个方法在遇上[ ...
- 6.etc目录下重要文件和目录详解
1./etc/下的重要的配置文件 /etc(二进制软件包的 yum /rpm 安装的软件和所有系统管理所需要的配置文件和子目录.还有安装的服务的启动命令也放置在此处) /etc/sysconfig/n ...
- AIX查询当前目录下各文件及目录大小
AIX下要查询某个目录下各个文件或目录的占用空间大小 可以对du命令增加一个别名alias 放在~/.profile里 alias dus='du -sg ./* |sort' s表示文件和目录都是显 ...
- 将二级目录下的文件合并成一个文件的Python小脚本
这个小程序的目的是将二级目录下的文件全部合并成一个文件(其实几级目录都可以,只要做少许改动) #coding:utf8 import sys, os def process(path): new_fi ...
- linux find-在指定目录下查找文件
推荐:更多Linux 文件查找和比较 命令关注:linux命令大全 find命令用来在指定目录下查找文件.任何位于参数之前的字符串都将被视为欲查找的目录名.如果使用该命令时,不设置任何参数,则find ...
随机推荐
- Numpy入门(一):Numpy的安装和创建
在数据分析和机器学习中,大量的使用科学计算,Numpy提供了大型矩阵计算的方式,而这些是python标准库中所缺少的.Numpy也是许多优秀的第三方库的基础,依赖于Numpy的库非常多,后续会慢慢的进 ...
- JAVA:初识Java · Xer97
1. 什么是Java Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征. Java语言作为静 ...
- 远程终端协议 TELNET
远程终端协议 TELNET 1.1.概述 TELNET 是一个简单的远程终端协议,也是因特网的正式标准. 用户用 TELNET 就可在其所在地通过 TCP 连接的23端口,使用主机名或 IP 地址登录 ...
- JavaScript逻辑分支switch 练习题
1.输入月份,显示当月的天数, 利用case穿透简化代码 var month = prompt("请输入月份"); var year = prompt("请输入年份&q ...
- Windows激活服务器搭建
1.下载服务端的安装包,下载地址: https://github.com/Wind4/vlmcsd/releases 注意,下载编译好的包省时间,名称为:binaries.tar.gz 或者直接下载我 ...
- springboot自动装配原理回顾、配置文件分析
配置文件 spring boot官方文档 官方外部配置文件说明参考文档 自动配置原理分析 1. SpringBoot启动的时候加载主配置类,开启了自动配置功能@EnableAutoConfigurat ...
- 关于css 的垂直居中
对于元素的水平居中,我根据我自己之前的一些学习来进行一些总结,如果有不对的地方,欢迎指正~ 一.让大小不固定的元素垂直居中 因为:表格的单元格的特别属性:垂直居中等: `div.parent { di ...
- Java的三魂七魄 —— 高级多线程
目录 Java的三魂七魄 -- 高级多线程 一.多线程的创建 二.线程安全问题 三.线程通信问题 四.更多实例 1.用线程同步的方法解决单例模式的线程安全问题 2.银行存钱问题(线程安全问题) 3.生 ...
- 线程(Thread)的四种停止方式
1.正常的程序启动,停止 2.使用退出标记,一般程序在run()方法后,线程会正常结束.但是有一些伺服线程还在运行,他们运行时间较长,只有当外部条件满足时,他们才会停止.实现如下: public cl ...
- Linux 常见目录
/bin 二进制目录,存放许多用户级的GNU工具 /boot 启动目录,存放启动文件 /dev 设备目录,Linux在这里创建设备节点 /etc 系统配置文件目录 /home 用户目录 /lib 库目 ...