《星际海关:.gitignore 之终极通关指南》
序章:海关的铁律
你是一名刚刚上任的星际海关总署署长(User)。你的职责是制定一本《违禁品查验手册》(.gitignore),指挥手下的机器人检查员(Git),决定哪些东西可以被装上飞往“GitHub 星”的货运飞船。
机器人检查员虽然执行力超强,但脑子是一根筋。他只会死板地从上往下读你的手册,并且严格遵守两条底层逻辑:
- 后来者居上: 如果第 1 条说“不准带酒”,第 100 条说“茅台可以带”,他会听第 100 条的。(后写的规则覆盖先写的)。
- 封门不进: 如果你封锁了一个房间,他连门都不会开,房间里就算有特赦的宝贝,他也看不见。(性能短路机制)。
第一章:初级禁令(基础匹配)
飞船即将起飞,你开始在手册最顶端写下第一批禁令:
# 1. 任何叫 temp 的东西都丢掉
temp
# 2. 任何 .log 结尾的日记本都丢掉
*.log机器人开始工作:
- 他看到客厅桌上的
temp苹果,丢掉。 - 他看到卧室里的
temp椅子,也丢掉。(没有斜杠,匹配所有层级)。 - 他看到哪里有
.log本子,统统丢掉。
第二章:锚定之锚(根目录匹配)
你发现机器人把厨房(build/)里的垃圾丢了,但同时也把邻居家借放在门口的建材(也是 build)给丢了。你只想丢掉你自己家门口的那个 build 文件夹。
于是你修改规则,加了一个“锚”:
# 3. 只丢掉大门口玄关处的 build 文件夹
/build/机器人看了一眼:
- 把门口的
/build/封锁了。 - 看到二楼有个
src/build/,他放行了。(斜杠在开头,只匹配根目录)。
第三章:封门的代价(目录短路陷阱)
你有个大仓库叫 logs,里面全是垃圾,但唯独有一份 error.log 是关键证据,必须带走。
你自信地写下:
# 4. 封锁 logs 仓库
logs/
# 5. 拿着特赦令,去 logs 仓库里把 error.log 拿出来!
!logs/error.log结果,机器人两手空空回来了。
你大怒:“特赦令没看见吗?!”
机器人委屈地说:“长官,第 4 条您让我封锁 logs/。我看到门上贴了封条,我就没进去啊!我没进去,怎么可能找得到里面的 error.log?”
教训:一旦封门,里头没救。
你赶紧修正指令,只清空内容,不锁大门:
# 4 (修正版). logs 仓库门开着,但里面的东西默认都是垃圾
logs/*
# 5. 唯独这个 error.log 是宝贝
!logs/error.log这次,机器人进去了,把垃圾清空,唯独留下了那份证据。
第四章:权力的游戏(顺序与优先级)
最后,到了最棘手的 ARM_JLINK 贵族庄园。
这里有一个复杂的冲突:
- 根据第 2 条全局禁令,所有
*.bin(二进制文件)都是垃圾。 - 但是,
ARM_JLINK庄园里的*.bin是珍贵的启动核心。
你必须利用**“后来者居上”**的规则来反转局势。
错误示范(先救后杀):
# 错误!写在第 2 条之前
!ARM_JLINK/**/*.bin
*.bin机器人:“长官,虽然您先说了要留着庄园里的 bin,但您最后又说所有 bin 都是垃圾。我听最后那句。” —— 核心被丢弃,任务失败。
正确示范(先杀后救):
# 第 2 条(早已写好): *.bin 是垃圾
# ... 手册的最后面 ...
# 6. 全局禁令虽然生效,但在 ARM_JLINK 领地内,我要行使特权!
!ARM_JLINK/**/*.bin机器人:“明白!虽然 *.bin 是违禁品,但对于 ARM_JLINK 庄园下的所有房间(/**/),只要看到 .bin,我都会依据最新的第 6 条指令,将其放行!”
终章:海关署长的四句真言
飞船顺利升空,你看着远去的背影,在笔记本扉页写下了毕生所学的四句真言,传给下一任署长:
- 先泛指,后特指: 大范围的禁令写上面,特殊的豁免写下面。(顺序原则)
- 想锚定,加斜杠: 想精准定位大门口,前面加个
/。(根目录原则) - 救文件,别救门: 只要目录被封死,里面的特赦令就是废纸。要用
dir/*代替dir/。(短路原则) - 搜深处,双星号: 想救深层文件,用
/**/穿透所有子目录。(递归原则)