使用 GIT LFS 跟踪没有文件扩展名的大型二进制文件

Use GIT LFS to track a large binary file without a file extension

iOS 框架内部是一个没有扩展名的二进制文件。我的二进制文件超过了 github 的 100MB 大小限制。

有什么想法吗?

在git-lfs v1.1.1中,git lfs track 'path/MyFramework'等跟踪效果很好。您可以使用 'ls-files'.

检查 git-lfs 是否正确跟踪文件
$ git lfs ls-files
828a9ca55c * path/MyFramework

如果 git 已经跟踪文件,git-lfs 不会跟踪它。我认为你必须删除跟踪 MyFramework 文件,然后添加 git lfs track ..,然后再次提交它。

发现此内容的人的一些注意事项:

  • 正如 Outsider 所说,您必须先将文件添加到 GIT LFS,然后再将其添加到 GIT:git lfs track 'path/to/file
  • 如果文件已经在 GIT 中,您需要先将其删除。如果您过去已经在本地将文件提交到 GIT,则您遇到了合法问题。您将无法在本地删除文件,因为远程仓库在删除文件之前首先需要拥有该文件。我通过使用列出的命令 here 将我的存储库恢复到大文件存在之前的状态来解决这个问题。如果你不能这样做,你将不得不以其他方式解决这个问题。 GIT 无限灵活,尽管不透明...
  • git lfs-ls-files 确认 LFS 正在跟踪您的文件之前,您必须将文件添加到实际 GIT: git add someFile
  • 我的 GIT 客户端(Gitbox)似乎不知道如何处理 GIT LFS,所以我需要(至少是第一次)添加、提交和推送(见here) 在命令行上。

一段时间以来我一直在努力寻找解决方案,每个答案都是使用 git lfs track .. 这对单个文件非常有用,但不能处理正在添加的新文件。

将此添加到 .gitattributes 文件可以找到 Repo 中没有扩展名的所有内容:

* filter=lfs diff=lfs merge=lfs -text # Include everything
/**/ -filter=lfs -diff=lfs -merge=lfs -text # Exclude directories
*.* -filter=lfs -diff=lfs -merge=lfs -text # Exclude anything with an extension