如何仅忽略由Markdown生成的PDF文件,保留非生成PDF?
嘿,这个问题确实有点棘手,因为Git的.gitignore本身是基于文件名模式匹配的,没办法直接“检查是否存在对应的Markdown文件”来决定是否忽略PDF。不过有几个实用的方法可以实现你的需求,我给你梳理一下:
方法1:强制添加非生成的PDF(最省心)
这个方法不需要复杂的规则,核心思路是:先忽略所有PDF,再把非生成的PDF强制加入Git追踪,这样生成的同名PDF会自动被忽略,而手动添加的PDF会被保留。
步骤如下:
- 在你的
.gitignore里添加一行:
这会让Git忽略所有PDF文件。*.pdf - 对于那些非生成的、需要保留的PDF(也就是没有对应
.md文件的),用强制添加命令把它们加入Git:
一旦用git add -f your-manual-file.pdf-f参数添加后,Git会一直追踪这个文件,哪怕它在.gitignore的忽略列表里。之后生成的同名PDF(比如article.pdf对应article.md)会自动被忽略,完全不用管。
方法2:用脚本自动生成忽略规则
如果你不想手动执行强制添加,可以写个简单的脚本,自动找出所有有对应.md的PDF,把它们加入.gitignore,同时保留其他PDF。
比如写个Bash脚本(适用于Linux/macOS):
#!/bin/bash # 临时文件存放自动生成的规则 temp_file=".gitignore_auto" > "$temp_file" # 遍历所有md文件,生成对应的pdf忽略规则 for md_file in *.md; do pdf_file="${md_file%.md}.pdf" echo "$pdf_file" >> "$temp_file" done # 添加一行,取消忽略所有其他PDF echo "!*.pdf" >> "$temp_file" # 把自动生成的规则合并到.gitignore(避免重复) grep -v -f "$temp_file" .gitignore > .gitignore.tmp cat "$temp_file" >> .gitignore.tmp mv .gitignore.tmp .gitignore rm "$temp_file"
每次生成PDF后运行这个脚本,它会自动更新.gitignore,只忽略那些有对应Markdown的PDF。
方法3:把生成文件放到专属目录(最规范)
如果你的生成工具支持调整输出路径,最好把生成的PDF和HTML放到一个专门的文件夹里,比如generated/或者output/。然后在.gitignore里只忽略这个目录下的PDF:
generated/*.pdf
这样既不用写复杂规则,也不用担心误忽略手动添加的PDF,是最规范的做法。
内容的提问来源于stack exchange,提问作者Porcupine
相关产品推荐
相关产品推荐

