使用 LFS 推送到新的远程

Sha*_*ard 3 git bitbucket gitlab git-lfs

远程存储库(origin @ BitBucket)被删除。我有该项目的本地版本,我正在尝试从本地副本重新创建此存储库。

删除的项目使用了LFS。我在 GitLab 上创建了一个新的空存储库,并将其添加为名为“ origin2 ”的辅助远程存储库。

当我尝试git push origin2 master上传过程陷入困境时Uploading LFS objects: 50% (2553/5107), 783 MB | 0 B/s

我尝试这样做git push origin2 master --no-verify并且这有效。但是,如果我现在从 GitLab 克隆这个新存储库并尝试打开该项目,我会收到各种错误,我认为这是因为 LFS 之前“处理”的一些文件丢失了。

有没有办法可以从本地副本完全重新创建存储库?

这是我的配置的样子:

[core]
    repositoryformatversion = 0
    filemode = false
    bare = false
    logallrefupdates = true
    symlinks = false
    ignorecase = true
[remote "origin"]
    url = git@bitbucket.org:company/project.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[lfs "https://bitbucket.org/company/project.git/info/lfs"]
    locksverify = false
[remote "origin2"]
    url = git@gitlab.com:company/project.git
    fetch = +refs/heads/*:refs/remotes/origin2/*
[lfs "https://gitlab.com/company/project.git/info/lfs"]
    locksverify = true
Run Code Online (Sandbox Code Playgroud)

bk2*_*204 5

如果原始服务器上没有所有 LFS 对象,那么您就会丢失数据。与 Git 数据不同,整个 LFS 数据并不存储在本地存储库中,通常仅存储在服务器上。

pre-push使用 跳过的钩子是--no-verify通常推送 LFS 文件的位置,这就是为什么推送这种方式似乎有效。

将 LFS 对象推送到新位置的正确方法是使用 获取它们git lfs fetch --all,然后使用 推送git lfs push --all NEW-REMOTE。但是,如果您无法获取旧数据,那么它就消失了。