我可以成功地将使用 Git LFS 的 git 存储库推送到 Github,但是当我尝试将其推送到我自己的服务器时,出现以下错误:
git-lfs-authenticate: not found
。
$ git push origin main |& cat
batch request: sh: 1: git-lfs-authenticate: not found: exit status 127
Uploading LFS objects: 0% (0/1), 0 B | 0 B/s, done.
error: failed to push some refs to 'git.example.com:'
在本地主机上,我使用
git-lfs/2.13.2
,在远程主机上使用 git-lfs/2.7.1
。这些分别是 Debian 10 和 11 的当前版本。我尝试通过将 git-lfs
二进制文件放入 /usr/local/bin
中,在两台主机上使用 最新版本的 Git LFS。现在输出略有不同,但我仍然遇到相同的错误:
$ git push origin main |& cat
batch request: sh: 1: git-lfs-authenticate: not found: exit status 127
error: failed to push some refs to 'git.example.com:'
我还尝试过搜索名为
git-lfs-authenticate
的二进制文件,但它不存在于 Git LFS 的任何版本中。我还尝试阅读Git LFS Server Documentation,其中提到了git-lfs-authenticate
命令,但它没有解释在哪里可以找到它或如何实现它。
您可能只是忘记了
git
将在哪里找到 LFS 后端的定义。
正如 @bk2204 已经提到的,我们假设您通过 ssh 查看了您的存储库,但大多数 LFS 后端不支持 ssh 连接。
因此,您需要定义所有/仅 LFS-Blob 应发送到
https
,即使您可以通过 ssh
查看存储库本身:
git clone ssh://git-server.com/foo/bar.git .
git config -f .lfsconfig lfs.url https://git-server.com/foo/bar.git/info/lfs
git add .lfsconfig && git commit -m"define lfs backend" && git push
正确的
lfs http url
是什么,取决于您的 git 主机。
Git LFS 的协议主要基于 HTTP,并且
git-lfs-authenticate
命令用于允许用户向远程服务器进行身份验证,以获取通过基于 HTTP 的协议使用的身份验证凭据。 Git LFS 目前没有纯基于 SSH 的协议。
因此,不可能发布此客户端的通用版本,因为它需要与 HTTP 服务器交互,而这不能以通用方式完成。 不过,您可以构建自己的服务器来与您自己的 HTTP 服务器交互。