如何使用 LFS 将 200MB 的文件正确上传到 GitHub
How to properly upload a 200MB file to GitHub using LFS
到目前为止,我已经花了很多时间尝试使用 LFS 从命令行将 Neo4j 数据库上传到 GitHub。使用 git init
创建本地存储库并首次提交后,我在推送时遇到了问题。
如果我没记错的话,超过100MB的文件只有一个,数据库核心文件之一。因此,由于只有一个大文件,我使用了命令 git lfs track "/data/databases/graph.db/neostore.transaction.db.0"
(路径中有和没有初始 /
)。我还尝试了 git lfs track "*.db"
、git lfs track "/data/databases/graph.db/*"
和 .gitattributes 的手动版本,但是这些方法中的 none 有效。错误如下:
LFS 似乎没有按照说明上传该文件。我的 LFS 版本是 2.7.2,所以这不是关于过时的版本。我错过了什么?
虽然您可能已经更新了 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,即使使用 Git LFS,通常也不是处理数据库等编译、构建资产的好工具。一般建议是,如果需要数据库内容(例如,用于测试),则数据库的源格式包含在存储库中,并且如果需要,数据库本身作为构建或测试步骤构建。这样做可能会使您的文件变小,也可能不会变小,以至于 Git 不需要 LFS。
到目前为止,我已经花了很多时间尝试使用 LFS 从命令行将 Neo4j 数据库上传到 GitHub。使用 git init
创建本地存储库并首次提交后,我在推送时遇到了问题。
如果我没记错的话,超过100MB的文件只有一个,数据库核心文件之一。因此,由于只有一个大文件,我使用了命令 git lfs track "/data/databases/graph.db/neostore.transaction.db.0"
(路径中有和没有初始 /
)。我还尝试了 git lfs track "*.db"
、git lfs track "/data/databases/graph.db/*"
和 .gitattributes 的手动版本,但是这些方法中的 none 有效。错误如下:
LFS 似乎没有按照说明上传该文件。我的 LFS 版本是 2.7.2,所以这不是关于过时的版本。我错过了什么?
虽然您可能已经更新了 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,即使使用 Git LFS,通常也不是处理数据库等编译、构建资产的好工具。一般建议是,如果需要数据库内容(例如,用于测试),则数据库的源格式包含在存储库中,并且如果需要,数据库本身作为构建或测试步骤构建。这样做可能会使您的文件变小,也可能不会变小,以至于 Git 不需要 LFS。