Windows下Tortoise阻止PDF提交失败,寻求其他有效方法
阻止Git仓库提交PDF文件的解决方法
全局忽略规则失效的原因
全局忽略(Global ignore pattern)仅对未被Git追踪的全新文件生效,如果用户手动执行git add命令添加PDF,或者仓库中已有PDF被提交过(处于已追踪状态),全局忽略规则无法阻止这类提交操作。
可行的解决方法
仓库级.gitignore文件(推荐)
在仓库根目录创建或编辑.gitignore文件,添加一行*.pdf规则。该规则属于仓库级配置,所有协作成员克隆仓库后都会自动应用,优先级高于全局忽略。
如果仓库中已经存在被提交过的PDF文件,需要先将它们从Git追踪中移除(保留本地文件):git rm --cached *.pdf执行完上述命令后,提交移除追踪的操作,之后新的PDF文件就会被自动忽略。
预提交钩子(强制拦截)
在仓库的.git/hooks目录下创建pre-commit文件(若已有pre-commit.sample,可直接重命名并修改内容),写入以下脚本:#!/bin/sh # 检查暂存区是否包含PDF文件 detected_pdfs=$(git diff --cached --name-only | grep -E '\.pdf$') if [ -n "$detected_pdfs" ]; then echo "禁止提交PDF文件!" echo "检测到的PDF文件:" echo "$detected_pdfs" exit 1 fi给脚本添加执行权限:
chmod +x .git/hooks/pre-commit此后每次执行
git commit时,脚本会自动检查暂存区,若存在PDF文件则直接终止提交流程。可以将这个钩子文件加入仓库,让所有协作成员同步使用。标记PDF为不可提交的二进制文件
在仓库根目录创建.gitattributes文件,添加以下规则:*.pdf binary -diff -merge -text该规则会将PDF标记为二进制文件,禁止Git对其进行diff、merge操作,再结合预提交钩子可以彻底阻止PDF被提交。
内容的提问来源于stack exchange,提问作者Steve1506
相关产品推荐
相关产品推荐

