如何将 git lfs 与“普通”git 一起使用

use*_*166 7 git git-lfs

我将普通(非 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 呢?

Ant*_*nio 6

您可以检查该文件是否已被标准 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>


pok*_*008 4

这里我将举个例子,我的文件夹名称是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)

上传需要一些时间,具体取决于您的互联网速度。

您可以参考这些以获取更多信息: