我将普通(非 lfs)存储库克隆到本地驱动器。现在我想向其中添加一个大于 100MB 的文件并将更改提交到存储库。我为此使用了以下命令:
git clone ....
Run Code Online (Sandbox Code Playgroud)
然后,我复制要添加到存储库的大小 >100MB 的文件。假设该文件的名称是“文件名”。
git lfs init
git lfs track "filename"
git add "filename"
git commit -m "commit message"
git push -u origin
Run Code Online (Sandbox Code Playgroud)
此操作失败,并显示文件大小错误消息,指出仅允许最大 100MB 的文件大小。
那么在这种情况下我该如何使用 git lfs 呢?
您可以检查该文件是否已被标准 git 跟踪。在这种情况下,我怀疑标准 git 仍然会跟踪它,而不是 git lfs,从而施加 100MB 的限制。
如果这适用于您的情况,请尝试将现有文件迁移到新的存储库中:
git lfs migrate import --include="your.file"
Run Code Online (Sandbox Code Playgroud)
并将转换后的存储库推送到新存储库:
git push
Run Code Online (Sandbox Code Playgroud)
PS:类似的现象发生在:忽略后验使用的.gitignore文件不会取消跟踪它。在这种情况下,您必须使用 ) 明确取消跟踪它。.gitignoregit rm --cached <file>
这里我将举个例子,我的文件夹名称是data存储我的大文件的地方。
配置
为了将此文件夹添加到您的存储库,您必须配置该.gitattributes文件。在我的例子中我会这样做
$ cat .gitattributes
$ data/* filter-lfs
Run Code Online (Sandbox Code Playgroud)
要跟踪文件,请使用:
$ git lfs track
Listing tracked paths
data/* (<repo name>/.gitattributes)
Run Code Online (Sandbox Code Playgroud)
那么你就可以出发了...
犯罪
使用本机 git 命令添加和提交文件。
$ git add data/
$ git commit -m "lf"
Run Code Online (Sandbox Code Playgroud)
您将观察到文件索引只需要 1-2 秒。要列出存储库中的所有 lfs,请使用:
$ git lfs ls-files
Run Code Online (Sandbox Code Playgroud)
完成所有操作后,您可以推送到远程:
$ git push -u origin master
Run Code Online (Sandbox Code Playgroud)
上传需要一些时间,具体取决于您的互联网速度。
您可以参考这些以获取更多信息: