Bitbucket中使用--no-verify推送Git标签仍因他人LFS文件锁触发预接收钩子拒绝的问题求助
Bitbucket中使用--no-verify推送Git标签仍因他人LFS文件锁触发预接收钩子拒绝的问题求助
看起来你碰到了一个特别让人困惑的问题——明明在推送标签时加了--no-verify参数,结果还是被Bitbucket的预接收钩子因为别人锁了无关的LFS文件给拦下来了,换谁遇上都会头疼。
先帮你理清一个关键误区:git push --no-verify这个参数的作用范围仅限本地,它能跳过的是你本地的预提交钩子、提交后钩子,以及本地的预推送钩子,但完全影响不了Bitbucket服务器上运行的预接收钩子。你之前以为加了这个参数就能绕过远程的检查,其实是对这个参数的功能理解有偏差啦。
回到你的场景,错误提示里提到的SANDBOX_proj/Other Test/Test4.txt是别人锁住的文件,而你的发布脚本操作的是另外两个txt文件,按理说不该被关联,但Bitbucket的预接收钩子可能配置了全仓库范围的LFS锁检查——不管你推送的内容有没有涉及被锁文件,只要仓库里存在未释放的LFS锁,就会直接拒绝推送。
给你几个可行的解决思路:
- 最直接的方式:联系锁住
Test4.txt的用户,让他们临时解锁,或者提交并推送他们的修改来释放锁。等锁释放后再执行你的发布脚本,应该就能正常推送了。 - 如果你有仓库管理员权限:可以去Bitbucket仓库的设置里看看,有没有调整LFS锁检查逻辑的选项——比如是否允许推送不涉及被锁文件的内容,或者是否能临时禁用这个触发预接收钩子的LFS锁检查规则。
- 再检查下你的脚本逻辑:虽然错误提示里的文件和你操作的无关,但可以确认下你的最终提交是否真的完全没触碰
Test4.txt?比如git rm -rf .之后有没有可能残留了什么关联?不过从你的步骤来看,概率很低,但排查一下也没坏处。
总之,核心问题就是--no-verify管不到远程的预接收钩子,你得从远程钩子的LFS锁检查规则入手解决这个问题。
备注:内容来源于stack exchange,提问作者gitrdone
相关产品推荐
相关产品推荐

