Git LFS 拒绝正确跟踪我的大文件,直到我执行以下操作
Git LFS refused to track my large files properly, until I did the following
问题
我在尝试使用 git LFS 时遇到了麻烦,尽管这里有很多关于 SO、Git 和 GitHub 的文档以及一些 Gists 的建议,我 运行横跨
我的问题如下:
执行必要的步骤后:
git lfs install
git lfs track "<file of interest>"
git commit
我仍然不会跟踪任何文件。如果我执行
git lfs ls-files
它将是空白的。如果我继续执行推送,事务将失败,说文件太大。 (不出所料,但我很绝望。)
我的(原创海报)"Solution"
然后我发现了一些修复,其中一些似乎是错误,其中一些对我来说根本不明显。
似乎要将 lfs
与 现有存储库 一起使用,需要黑客工具或第三方工具,例如 BFG's converter需要。
- 我不想走那条路,所以我只是 在本地初始化了一个新的存储库 ,然后挑战将它连接回真实的存储库。
- 我创建了一个新目录,然后
git init
,等等。
- 在我的例子中,远程存储库是 GitHub。所以我做了所有这些适当的连接,比如
git remote add origin git@github.com:<my_id>/<my_repo>.git
此外,虽然 Git's Training Video 声称您可以简单地 指定一个文件夹 ,例如 "my_folder/"
,但我无法得到这个上班。因此,我只是巧妙地使用文件扩展名来管理东西。
- 例如,
git lfs track "my_folder/"
对我无效,但 git lfs track "*.zip"
有效。
除非我 首先更新 .gitattributes
文件,然后提交并将该新文件推送到远程服务器,否则我无法正确识别 LFS 文件.
git lfs track "*.zip"
git add .gitattributes
git commit -m "Updated the attributes"
git push
git add my_large_file.zip
git lfs ls-files
- 在这里我会确保我看到
my_large_file.zip
被跟踪。
git commit -m "Now I am adding the large file"
git push
有可能有些事情奏效了,只是我做错了。然而,按照上面描述的巫术终于让 LFS 工作了,所以我想我会把这些细节传递给其他人,以防其他人遇到同样的问题。
要通过 LFS 跟踪 my_folder
的所有文件和子目录,您可以这样做:
git lfs track "my_folder/**"
对我有用。
到目前为止,执行以下操作无法跟踪整个 my_folder
目录:
git lfs track "my_folder/"
不工作
要将文件放在 lfs 上的现有存储库中,您还可以执行以下操作:
git lfs migrate import --include="*.mp3,*.pth"
正如@Ravin Sardal 在评论中所建议的那样,我所要做的就是 运行
来解决这个问题
git lfs install
在存储库的基本目录中设置大文件支持。之后
git lfs track "<file of interest>"
按预期工作,确实 git lfs ls-files
在提交之前列出了跟踪的文件。
问题
我在尝试使用 git LFS 时遇到了麻烦,尽管这里有很多关于 SO、Git 和 GitHub 的文档以及一些 Gists 的建议,我 运行横跨
我的问题如下:
执行必要的步骤后:
git lfs install
git lfs track "<file of interest>"
git commit
我仍然不会跟踪任何文件。如果我执行
git lfs ls-files
它将是空白的。如果我继续执行推送,事务将失败,说文件太大。 (不出所料,但我很绝望。)
我的(原创海报)"Solution"
然后我发现了一些修复,其中一些似乎是错误,其中一些对我来说根本不明显。
似乎要将
lfs
与 现有存储库 一起使用,需要黑客工具或第三方工具,例如 BFG's converter需要。- 我不想走那条路,所以我只是 在本地初始化了一个新的存储库 ,然后挑战将它连接回真实的存储库。
- 我创建了一个新目录,然后
git init
,等等。- 在我的例子中,远程存储库是 GitHub。所以我做了所有这些适当的连接,比如
git remote add origin git@github.com:<my_id>/<my_repo>.git
- 在我的例子中,远程存储库是 GitHub。所以我做了所有这些适当的连接,比如
此外,虽然 Git's Training Video 声称您可以简单地 指定一个文件夹 ,例如
"my_folder/"
,但我无法得到这个上班。因此,我只是巧妙地使用文件扩展名来管理东西。- 例如,
git lfs track "my_folder/"
对我无效,但git lfs track "*.zip"
有效。
- 例如,
除非我 首先更新
.gitattributes
文件,然后提交并将该新文件推送到远程服务器,否则我无法正确识别 LFS 文件.git lfs track "*.zip"
git add .gitattributes
git commit -m "Updated the attributes"
git push
git add my_large_file.zip
git lfs ls-files
- 在这里我会确保我看到
my_large_file.zip
被跟踪。
- 在这里我会确保我看到
git commit -m "Now I am adding the large file"
git push
有可能有些事情奏效了,只是我做错了。然而,按照上面描述的巫术终于让 LFS 工作了,所以我想我会把这些细节传递给其他人,以防其他人遇到同样的问题。
要通过 LFS 跟踪 my_folder
的所有文件和子目录,您可以这样做:
git lfs track "my_folder/**"
对我有用。
到目前为止,执行以下操作无法跟踪整个 my_folder
目录:
git lfs track "my_folder/"
不工作
要将文件放在 lfs 上的现有存储库中,您还可以执行以下操作:
git lfs migrate import --include="*.mp3,*.pth"
正如@Ravin Sardal 在评论中所建议的那样,我所要做的就是 运行
来解决这个问题git lfs install
在存储库的基本目录中设置大文件支持。之后
git lfs track "<file of interest>"
按预期工作,确实 git lfs ls-files
在提交之前列出了跟踪的文件。