首页 > 解决方案 > 存储库中的 Git 属性

问题描述

在 gitattributes 我发现

 *.tar filter=lfs diff=lfs merge=lfs -text

 *.tar.gz filter=lfs diff=lfs merge=lfs -text

在上面添加这些 tar 行有什么用?

如果我们从存储库中删除这个 .gitattributes 会发生什么

标签: gitapigithubgitlabbitbucket

解决方案


这些属性指定文件将通过 Git LFS 作为涂抹和清洁过滤器运行.tar.tar.gz当您使用 Git LFS 存储文件时,这些文件将作为小指针文件存储在存储库中,实际文件内容由 Git LFS 处理。这意味着您的存储库不会被大型二进制文件所膨胀,并且只有在需要时,Git LFS 才会将二进制文件下载到您的系统中。

如果你删除了这个.gitattributes文件,那么已经使用 Git LFS 存储在存储库中的任何文件都将变得不可访问,因为你将只有指针文件。如果以后,您希望将这些对象作为 Git 对象而不是 Git LFS 对象存储在存储库中,您可以使用干净的工作树来执行此操作:

$ git rm .gitattributes
$ git add --renormalize .
$ git commit -m 'Remove use of Git LFS'

请注意,如果这些 tarball 很大,那么您最终可能会在存储库中存储多个副本,这会使您的存储库膨胀。如果它们大于 100 MB,GitHub 将不再让您推送您的存储库,并要求您在推送之前再次使用 Git LFS。


推荐阅读