将 git 目录从一个支持 LFS 的仓库移动到另一个(也是 LFS)

Move git directory from one LFS-enabled repo to another (also LFS)

我们希望将特定目录从一个 git 存储库移动到另一个。我找到了 these instructions,直到从远程分支拉取点为止,一切顺利; git-lfs 跟踪两侧的文件似乎使过程变得有些复杂。

我直接在我的本地克隆之间尝试了这个,以及在分支上执行过滤器分支并将其推送到主服务器 (VSTS)。在这两种情况下,污迹过滤器都失败了,说它找不到 LFS 跟踪的文件;使用 VSTS 远程时,记录的错误是 404。

我想将这些文件作为 LFS 在目标中跟踪,无论移动是直接使用本地克隆还是涉及服务器。是否有任何额外的 commands/switches 或准备步骤可以做到这一点?

根据repository clone times-out lfs files cannot be retrieved #1181

In both cases the smudge filter failed, saying it couldn't find the LFS-tracked file; with the VSTS remote the error logged is a 404.

表示服务器上不存在这些文件。您可以尝试找到该存储库的本地克隆,并且 运行 git lfs push REMOTE_NAME --all.

您可能需要执行 git lfs fetch --all 以下载所有 LFS-tracked 文件,然后再将它们推送到新的 Git 存储库。

(在正确的方向上对提示的另一个答案进行了投票,尽管我的新手代表不会显示它。)

这里的关键似乎是 git lfs fetch --all 在分支之前和 运行 filter-branch,按照文章中的描述移动和提交。看起来 LFS 并不打算在本地克隆之间工作;反转过程以 push 到目标克隆也导致错误,但在为目标 repo 推送到远程服务器时它确实有效。

从那里,获取目标克隆并与 --allow-unrelated-histories 合并看起来已经给了我们想要的东西。

对我来说,最简单的方法是分叉存储库(这意味着在服务器端)