【发布时间】:2022-01-04 11:17:55
【问题描述】:
可以用“普通”二进制文件覆盖 git lfs 指针。
除了仔细查看您的提交之外,还有其他方法可以防止这种情况发生吗?
例如,拒绝此类覆盖提交的服务器端策略?
【问题讨论】:
-
Git 本身不知道 Git-LFS。 Git-LFS 在之前 Git 曾经看到 交换文件。所以不可能在 Git 中处理这个问题。
可以用“普通”二进制文件覆盖 git lfs 指针。
除了仔细查看您的提交之外,还有其他方法可以防止这种情况发生吗?
例如,拒绝此类覆盖提交的服务器端策略?
【问题讨论】:
这种情况并不少见,如果用户在推送之前没有在其客户端上正确配置 Git LFS,就会发生这种情况。
Git LFS 3.0 提供了git lfs fsck --pointers 选项,即documented in the manual page。你可以在你的 CI 中运行它,或者,如果 Bitbucket 提供了pre-receive 钩子,你也可以在那里运行它。如果你不能使用pre-receive钩子,那么你不能阻止代码被推送,但你当然可以阻止它被合并。
我建议升级到 3.0.2,因为最初的 3.0 版本在这方面存在一些错误,现已修复。
【讨论】: