到目前为止,我已经花了很多时间试图使用LFS从命令行将Neo4j数据库上传到GitHub。使用git init
创建本地存储库并首次提交后,我在推送时遇到了麻烦。
如果我没记错的话,只有一个大小超过100MB的文件是数据库核心文件之一。因此,由于只有一个大文件,因此我使用了命令git lfs track "/data/databases/graph.db/neostore.transaction.db.0"
(在路径中带有或不带有初始/
)。我也尝试过{git.gitattributes的git lfs track "*.db"
,git lfs track "/data/databases/graph.db/*"
和手册版本,但是这些方法都不起作用。错误如下:
尽管有相关说明,LFS似乎并未上传该文件。我的LFS版本是2.7.2,所以这不是过时的版本。我想念什么?
答案 0 :(得分:1)
虽然您可能已经更新了master
分支以跟踪最新版本的Git LFS中的大文件,但仍可能存在将大文件作为纯Git对象包含的历史记录。 GitHub不允许您在历史记录中的任何位置上传任何大于100 MB的Blob。
为了解决此问题,您需要重写历史记录。您可以使用git lfs migrate import
来做到这一点,就像这样:
git lfs migrate import --everything --include="*.db.0"
这将重写整个项目的历史记录,包括所有分支和标签,因此在所有修订版中,该文件均为Git LFS文件。您可以在the manual page中看到可以使用的配置选项。
请注意,即使使用Git LFS,Git通常也不是处理诸如数据库之类的已编译,已构建资产的好工具。通常的建议是,如果需要数据库内容(例如,用于测试),则在存储库中包含数据库的源格式,并且如果需要的话,将数据库本身构建为构建或测试步骤。这样做可能会或可能不会使您的文件变小到不需要Git LFS。