已将/Library加入.gitignore仍被推送,pre-receive hook拒绝求助
解决方案
一、先终止对/Library目录的追踪
.gitignore仅对未被Git追踪的文件生效,如果你之前已经提交过/Library目录,哪怕后来加了忽略规则也没用。执行以下命令移除追踪(本地文件会保留):
git rm -r --cached /Library git commit -m "停止追踪Library目录"
确认你的.gitignore中/[Ll]ibrary/的路径匹配项目根目录下的Library,大小写规则也覆盖到了。
二、排查Git LFS推送问题
既然项目初期就启用了LFS,推送失败大概率和LFS对象未正确上传有关:
- 检查本地LFS对象状态并推送:
git lfs status git lfs push origin --all
- 确认远端仓库的LFS功能是否正常:如果是托管平台,去仓库设置里检查LFS是否开启;如果是自建服务器,确保LFS服务运行正常。
三、解决pre-receive hook拒绝问题
之前的教程没解决,得针对性排查hook限制:
- 如果你有权限,查看远端仓库的pre-receive hook脚本,这类钩子通常会限制文件大小、类型或提交内容(比如可能未识别LFS对象,误判大文件)。
- 托管平台的话,检查仓库的规则设置(比如大文件检测、仓库容量限制)。
- 尝试推送单个commit定位问题:
git push origin HEAD:你的分支名
逐步缩小范围,看是哪个提交触发了钩子拒绝。
四、新分支推送失败的排查
新分支也失败说明是全局推送限制:
- 检查本地LFS配置是否正确:
git lfs env
输出需包含git config filter.lfs.process和git config filter.lfs.smudge等有效配置。
- 强制重新初始化LFS(若配置异常):
git lfs install --force
验证.gitignore生效
提交完移除追踪的commit后,执行git status,如果Library目录显示为untracked,说明忽略规则已经生效。
内容的提问来源于stack exchange,提问作者James
相关产品推荐
相关产品推荐

