git:如果 git-fat 不处理二进制文件,则保证不会将它们添加到提交中

标签 git

我正在使用 git-fat 和 git 来处理大型二进制文件。我试图解决的问题是,如果 git-fat 不处理大型二进制文件,则防止它们被添加到本地提交中。

我的方法是更新预提交以阻止所有二进制文件并仅允许文件 IF:

  • 运行了 git fat init
  • .gitfat 文件存在并配置了 rsync
  • 在文件上运行 git check-attr filter 以验证 filter: fat 在输出中

我是不是错过了一个技巧?用gitgit-fat

解决这个问题有什么好的方法

例如,当对二进制文件调用 git add 时,我可以对 .git/fat/objects 做些什么来确定 git-fat 处理了该文件吗?

最佳答案

Am I missing a trick with this?

最好在服务器端添加一个限制,这将限制/阻止推送的大小,防止任何可能从裂缝中掉下来的大型二进制文件通过。

检测是否git fat init被执行后,你可以简单地查询git config filter.fat.cleangit config filter.fat.smudge的值。

git-fat 的有趣之处在于它不需要 Git 托管服务器本身的任何特殊功能/支持:大文件的存储/替换由本地过滤器处理。

同一文件管理的更新版本是 git lfs ,它也通过 Git 过滤器运行。

当然,不需要过滤器且完全自动化的最终解决方案是 VFS for Git , Git Virtual Filesystem由 Microsoft 开发,并慢慢 merge 回 Git 本身。但它确实需要支持该功能的 Git 存储库托管服务器。


OP 添加:

Is there anything I can do with the .git/fat/objects to determine that git-fat handled the file when git add was called on the file?

命令git fat verify确实会检查每个对象:可以调整它以查看特定文件,并检查其自身与 catalog_objects 之间的 sha1。

关于git:如果 git-fat 不处理二进制文件,则保证不会将它们添加到提交中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52852054/

相关文章:

git - 我怎样才能轻松修复过去的提交?

git - 如何显示特定日期的提交?

git - 由 'recursive' 策略进行的 merge

git - 验证数据无效。连接被拒绝。 android studio 无法登录github

Git merge 报告文件在不存在时被删除

git - 如何同时使用 Git 和 Dropbox?

git - 我如何在 gitk 中提交 "unmark"?

git - git commit占用了多少磁盘空间

python - pip 意外地没有安装带有分支/提交固定的最新版本的 git 包

git - 我可以将我的 git 存储库的 gh-pages 分支作为 Master 分支的镜像吗?