git lfs仅推送占位符文件

git lfs仅推送占位符文件,git,git-lfs,Git,Git Lfs,我尝试获取现有的git lfs存储库,并将其推送到辅助远程服务器。在辅助远程设备上,LFS文件似乎被推送,就好像git LFS的“占位符”文件(包含三行的文本文件:版本、oid、大小)是真实的文件一样。尝试克隆辅助远程设备也失败,原因是:Smudge错误:下载时出错。。。对象在服务器上不存在 辅助遥控器具有正确存储的其他LFS文件。有问题的文件也正确地存储在repo的“主”远程存储库和我的本地存储库中(意思是:我看到的是实际的文件,而不是占位符) 我不确定这是怎么发生的/为什么发生的(git l

我尝试获取现有的git lfs存储库,并将其推送到辅助远程服务器。在辅助远程设备上,LFS文件似乎被推送,就好像git LFS的“占位符”文件(包含三行的文本文件:版本、oid、大小)是真实的文件一样。尝试克隆辅助远程设备也失败,原因是:
Smudge错误:下载时出错。。。对象在服务器上不存在

辅助遥控器具有正确存储的其他LFS文件。有问题的文件也正确地存储在repo的“主”远程存储库和我的本地存储库中(意思是:我看到的是实际的文件,而不是占位符)

我不确定这是怎么发生的/为什么发生的(git lfs是在我的本地repo中初始化的,据我所知推送钩子是安装的),但我想推送实际的文件。我该怎么做

我尝试了
git-lfs-push--all secondary-remote-branch name
git-lfs-push secondary-remote--object id“abc123”
,但两者似乎都没有任何效果(它们都打印了一条“Uploading-lfs-objects:100%…”消息,但文件仍然没有显示在远程上)


编辑:一位同事做了一个
git-lfs拉
和一个
git-lfs推
,似乎解决了问题。但我不太清楚为什么,因为我的本地repo已经签出了实际的二进制文件。

在安装git LFS之前,我将LFS文件下载到我的repo时遇到了同样的问题。安装后,文件仅包含链接

在编辑问题时,当我跑

git lfs pull
git lfs push  
在文件更新之后


(不知道这是否是一个完整的答案,但这是我发现的唯一一个解决这个问题的地方。也许它对更多的人有帮助。)

就Git本身而言,占位符是真实的文件。辅助存储库需要设置一个“污迹”过滤器,以便它知道,一旦作为占位符的真实文件从Git中出来,辅助repo就应该在工作树中将其替换为伪文件,伪文件是来自LFS服务器的内容,Git自己完全不知道。换句话说,辅助远程设备尚未正确设置为对Git撒谎。我不使用Git LFS,因此我不确定如何进行设置。@torek AFAIK
。gitattributes
是设置过滤器的工具,它被检入并推送到辅助存储库。虽然我实际上并不太关心远程设备(在本例中为github)是否正确显示文件,但我只关心它是否可以签出,在本例中它不能签出,错误为“Smudge error:error downloading…”。。。。对象在服务器“”上不存在。因此,我不认为污迹过滤器是(唯一)问题。我根本不知道如何让GitHub读取LFS服务器文件,但它需要的不仅仅是
.gittributes
,因为这告诉了要使用哪个过滤器,但没有定义过滤器本身(过滤器定义在
.git/config
.gitconfig
文件中)。间接文件(对Git说的谎话)提供了完整的URL还是LFS服务器上的路径?@torek我的印象是GitHub的存储库预先配置了LFS钩子。已将其他LFS文件推送到该远程设备,这些文件可以正常工作。我不确定您指的是哪个URL——间接寻址文件包含版本、哈希和大小。version/hash/size告诉某些LFS服务器(不是Git服务器)要检索什么。但是什么服务器?这不是Git服务器。服务器将由单独的URL指定,例如,或类似的URL。