1
iLoveSS OP 问了下 chatgpt3.5, 给的几个答案都不行. 比如
# Ignore all files in "a" directory except .txt files /a/* !/a/**/*.txt |
2
AoEiuV020JP 112 天前
gitignore 是用来“排除”文件的,你不能总想着“只追踪”,应该想你要排除的是什么,
比如你 b 目录要不要排除掉,按理说你这问法不应该排除 b 目录,但字面上理解就是 a 目录以外的文件全部排除? 答案有问题就说说是什么文件有问题, 应该排除还是不排除, 结果是排除了还是没排除,提问的艺术, |
3
iLoveSS OP |
4
AoEiuV020JP 112 天前
试了下, 主要坑点应该是子目录不能排除掉,一旦 a1 被排除了,a1 内的文件就无法例外,
1 , /a/**.* !/a/*.txt !/a/a1/*.txt 2, /a/**.* !/a/**.txt 你这情况最好应该是多级.gitignore ,a 和 a1 分别不同的规则, |
5
hxsf 112 天前
gpt 的答案挺对的
那些没排除的文件是否在你修改 .gitignore 文件之前就已经被跟踪了? |
6
iLoveSS OP |
7
newaccount 112 天前 1
问题 1:
/* !/a /a/* !/a/*.txt !/a/a1 /a/a1/* !/a/a1/*.txt 问题 2: /* !/a /a/**/*.* !/a/**/*.txt 感觉 2 的答案不是很好,对于没有扩展名的可能出问题,还没想到好方法,摸会鱼 |
8
winix 112 天前 1
*
!a/ !a/**/ !a/**/*.txt |
9
AoEiuV020JP 112 天前
@AoEiuV020JP #4 进一步试了下,这里一个重点是,gitignore 无法指定“文件”,但是有办法指定“文件夹”,所以可以加一个规则例外掉文件夹,就可以正常例外子目录里的文件了,
2 , /a/* !/a/**/ !/a/**.txt |
10
iLoveSS OP @newaccount 挺好的,目前已经能解决我的问题了! 谢谢
|
11
lucasj 112 天前 1
|
12
newaccount 112 天前
@lucasj 这样子跟 a 同级如果有个 b 目录就有问题了
|
13
iLoveSS OP |
14
5qn1H9F2PRhK4rq5 112 天前
# 忽略所有文件
* # 不忽略根目录所有非目录的文件 !/*.* # 不忽略 a 、a1 所有目录 !a/ !a/a1/ # 不忽略 a\a1 中的 .txt 文件 !a/*.txt !a/a1/*.txt |
15
newaccount 112 天前
@iLoveSS 如果 b 目录下有个 a.txt ,那么这个文件也会被追踪,与问题 2 的需求不符
问题 2 用 8L winix 的写法吧,挺巧妙的解决了 |
16
sbldehanhan 112 天前
*
!.gitignore !*/ !*.txt 只保留 txt 文件和.gitignore 。 |
17
iLoveSS OP @newaccount 谢谢大佬, 这里可能有点理解的偏差. 我的本意是只针对工作目录下的 a 目录内容进行排除. 所以 b 目录不在筛选之内也是对的.
|
18
oeyoews 112 天前 via iPhone
gitignore 文件可以有多个
|