请教一个 gitignore 的写法

iLoveSS · 2024-8-1 09:51:20 · 135 次点击
假设我的 windows 设备工作目录下有如下文件目录结构
.gitignore
.\a
.\a\1.txt
.\a\2.dll
.\a\a1
.\a\a1\3.txt
.\a\a1\4.dll

问题 1:
如何设置.gitignore 让 git 只追踪 a 目录和 a\a1 目录下的所有 txt

问题 2:
如何让 git 只追踪 a 目录及所有递归子目录下的 txt 文件,但排除其它扩展名文件.
举报· 135 次点击
登录 注册 站外分享
8 条回复  
AoEiuV020JP 小成 2024-8-1 10:09:03
gitignore 是用来“排除”文件的,你不能总想着“只追踪”,应该想你要排除的是什么,
比如你 b 目录要不要排除掉,按理说你这问法不应该排除 b 目录,但字面上理解就是 a 目录以外的文件全部排除?

答案有问题就说说是什么文件有问题, 应该排除还是不排除, 结果是排除了还是没排除,提问的艺术,
hxsf 小成 2024-8-1 10:13:54
gpt 的答案挺对的
那些没排除的文件是否在你修改 .gitignore 文件之前就已经被跟踪了?
newaccount 小成 2024-8-1 10:19:08
问题 1:
/*
!/a
/a/*
!/a/*.txt
!/a/a1
/a/a1/*
!/a/a1/*.txt

问题 2:
/*
!/a
/a/**/*.*
!/a/**/*.txt

感觉 2 的答案不是很好,对于没有扩展名的可能出问题,还没想到好方法,摸会鱼
winix 初学 2024-8-1 10:19:34
*
!a/
!a/**/
!a/**/*.txt
lucasj 小成 2024-8-1 10:38:28
@newaccount #7 优化一下

1

a/*
!a/*.txt
!a/a1
a/a1/*
!a/a1/*.txt

2

a/**/*.*
!a/**/*.txt
5qn1H9F2PRhK4rq5 小成 2024-8-1 10:53:19
# 忽略所有文件
*

# 不忽略根目录所有非目录的文件
!/*.*


# 不忽略 a 、a1 所有目录
!a/
!a/a1/

# 不忽略 a\a1 中的 .txt 文件
!a/*.txt
!a/a1/*.txt
sbldehanhan 小成 2024-8-1 10:59:36
*
!.gitignore
!*/
!*.txt

只保留 txt 文件和.gitignore 。
oeyoews 小成 2024-8-1 22:26:25
gitignore 文件可以有多个
返回顶部