获取 git LFS 文件时出错:服务器上不存在对象:[404] 服务器上不存在对象
Error when getting git LFS files: Object does not exist on the server: [404] Object does not exist on the server
我下载并安装了Git 大型文件存储。现在我正在尝试从 github(不是我的)中的现有存储库中获取 lfs 文件。
我试过了:
git lfs clone https://github.com/xxx/xxx
然后在我刚刚克隆的本地存储库中:
git lfs fetch --all
git lfs pull
我也试过同样的方法,但没有“lfs”。
存储库已克隆,但对于所有 lfs 文件始终显示此错误:
[301582dabd8c6ac7bdf626c7e4a1d64c8f9665b65b6334b44642bdfb78054575] Object does not exist on the server: [404] Object does not exist on the server
然后:
error: failed to fetch some objects from 'https://github.com/xxx/xxx.git/info/lfs'
因此,克隆的不是真正的大文件,而是 GitHub 本身可见的小指针。
同时这条命令:
git log --all -p -S 301582dabd8c6ac7bdf626c7e4a1d64c8f9665b65b6334b44642bdfb78054575
给出以下结果:
commit 36c7dba69de90d99f0c305fce13a598b8f06b443
Author: xxx
Date: Wed Sep 11 18:01:25 2019 +0200
Add embeddings
diff --git a/embeddings/wikipedia/0.pkl b/embeddings/wikipedia/0.pkl
new file mode 100644
index 0000000..5ee94da
--- /dev/null
+++ b/embeddings/wikipedia/0.pkl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:301582dabd8c6ac7bdf626c7e4a1d64c8f9665b65b6334b44642bdfb78054575
+size 588838774
我对 GitHub 的用户不是很有信心,尤其是 LFS。所以,问题是:我做错了什么还是确实意味着服务器上不存在这些文件?
此错误消息是 HTTP 404 Not Found 错误。本质上,这意味着 Git LFS 试图下载该文件,但它不存在。很可能是用户没有正确上传,可能是因为他们没有 运行 git lfs install
。如果他们有 运行 该命令,安装在他们存储库中的 pre-push
挂钩会在 Git 对象上传之前将文件推送到服务器。
由于文件未上传,您无法下载。您必须要求作者 运行 git lfs push --all
在他们的存储库中将它们上传到正确的位置,以便可以下载它们。
如果您要从一个 GIT 存储库迁移到另一个,您需要从源存储库中获取完整的 LFS 历史记录并将完整的 LFS 历史记录推送到一个新的(空的)目标存储库以避免缺少 lfs 对象。我从源代码库迁移到目标代码库的步骤:
从源代码库克隆并下载完整的 LFS 历史记录
git clone http://source... local_src
cd local_src
git lfs fetch --all
推送到新的目标存储库并上传完整的 LFS 历史记录
git remote set-url origin https://target...
git push --mirror origin
git lfs push origin --all
我下载并安装了Git 大型文件存储。现在我正在尝试从 github(不是我的)中的现有存储库中获取 lfs 文件。 我试过了:
git lfs clone https://github.com/xxx/xxx
然后在我刚刚克隆的本地存储库中:
git lfs fetch --all
git lfs pull
我也试过同样的方法,但没有“lfs”。
存储库已克隆,但对于所有 lfs 文件始终显示此错误:
[301582dabd8c6ac7bdf626c7e4a1d64c8f9665b65b6334b44642bdfb78054575] Object does not exist on the server: [404] Object does not exist on the server
然后:
error: failed to fetch some objects from 'https://github.com/xxx/xxx.git/info/lfs'
因此,克隆的不是真正的大文件,而是 GitHub 本身可见的小指针。
同时这条命令:
git log --all -p -S 301582dabd8c6ac7bdf626c7e4a1d64c8f9665b65b6334b44642bdfb78054575
给出以下结果:
commit 36c7dba69de90d99f0c305fce13a598b8f06b443
Author: xxx
Date: Wed Sep 11 18:01:25 2019 +0200
Add embeddings
diff --git a/embeddings/wikipedia/0.pkl b/embeddings/wikipedia/0.pkl
new file mode 100644
index 0000000..5ee94da
--- /dev/null
+++ b/embeddings/wikipedia/0.pkl
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:301582dabd8c6ac7bdf626c7e4a1d64c8f9665b65b6334b44642bdfb78054575
+size 588838774
我对 GitHub 的用户不是很有信心,尤其是 LFS。所以,问题是:我做错了什么还是确实意味着服务器上不存在这些文件?
此错误消息是 HTTP 404 Not Found 错误。本质上,这意味着 Git LFS 试图下载该文件,但它不存在。很可能是用户没有正确上传,可能是因为他们没有 运行 git lfs install
。如果他们有 运行 该命令,安装在他们存储库中的 pre-push
挂钩会在 Git 对象上传之前将文件推送到服务器。
由于文件未上传,您无法下载。您必须要求作者 运行 git lfs push --all
在他们的存储库中将它们上传到正确的位置,以便可以下载它们。
如果您要从一个 GIT 存储库迁移到另一个,您需要从源存储库中获取完整的 LFS 历史记录并将完整的 LFS 历史记录推送到一个新的(空的)目标存储库以避免缺少 lfs 对象。我从源代码库迁移到目标代码库的步骤:
从源代码库克隆并下载完整的 LFS 历史记录
git clone http://source... local_src
cd local_src
git lfs fetch --all
推送到新的目标存储库并上传完整的 LFS 历史记录
git remote set-url origin https://target...
git push --mirror origin
git lfs push origin --all