Git推送遭远程拒绝(预接收钩子拦截),强制推送无效求助
Git Push 被远程仓库拒绝(pre-receive hook declined)解决方案
问题原因
远程仓库配置了pre-receive钩子做文件扩展名校验,你的提交里包含了被禁止的.so格式文件:java/gamebase-main/gamebasesdk/src/main/cpp/arm64-v8a/libopencv_java3.so,触发钩子限制导致推送失败。git push --force无效,因为钩子是远程端强制校验环节,强制推送绕不开这个检查。
解决办法
移除违规文件后重新推送
- 从本地仓库暂存区移除该文件(保留本地文件不删除):
git rm --cached java/gamebase-main/gamebasesdk/src/main/cpp/arm64-v8a/libopencv_java3.so - 提交移除操作:
git commit -m "移除被钩子限制的libopencv_java3.so文件" - 再次推送分支:
git push origin dev_likun_release_2
- 从本地仓库暂存区移除该文件(保留本地文件不删除):
配置.gitignore避免后续误提交
- 打开项目根目录的
.gitignore文件,添加规则(二选一):- 忽略所有
.so文件:*.so - 仅忽略该路径下的
.so文件:java/gamebase-main/gamebasesdk/src/main/cpp/arm64-v8a/*.so
- 忽略所有
- 提交
.gitignore的修改:git add .gitignore && git commit -m "添加规则忽略.so文件" - 再次推送分支。
- 打开项目根目录的
确需提交该文件时联系管理员
如果业务上必须提交这个.so文件,直接联系仓库管理员,请求修改pre-receive钩子的校验规则,将.so文件加入允许提交的名单。
内容的提问来源于stack exchange,提问作者user21005893
相关产品推荐
相关产品推荐

