【问题标题】:Transfer Git-LFS repository to a new one, with history将 Git-LFS 存储库转移到具有历史记录的新存储库
【发布时间】:2022-08-07 17:46:09
【问题描述】:

所以我们有一个远程 git 服务器,但是它“烧毁了”,现在我尝试将一个具有所有历史记录的 git 存储库推送到一个新存储库,但是我收到一个(缺少)obj lfs 错误

我试过git lfs migrate,但犯了一个错误,所有文件都转换为lfs,所以有一次它可以工作,但是用lfs对象搞乱了所有历史,所有历史都是\“lfs add\”,\“lfs deleted\”

现在git lfs migrate 运行良好,但是当我尝试推送它时显示相同的错误(missing) PathToFile (4750fda193ad9d6cd94e7df41afb74f3379c53291515f92dbd619d99eb951069)

在保留所有历史记录的情况下,我该怎么做才能正确推送?

更新:我试着做

1git fetch --prune

2git add --renormalize .

3git push --prune git@example.com:/new-location.git +refs/remotes/origin/*:refs/heads/* +refs/tags/*:refs/tags/*

最后,当 push 显示与 (missing) PathToFIle (...) 相同的错误时

  • \'但我得到一个(丢失的)obj lfs 错误\' --- 在哪一步?什么命令?
  • @LeiYang 当我尝试推送到空的远程存储库时。一般来说,我尝试修剪,迁移,在本地一切都很好,问题在于远程推送
  • 请粘贴您的命令。
  • git lfs push origin develop - 你在说这个吗?
  • 我从来没有用过lfs。但你能解释一下你为什么使用吗?

标签: git git-lfs


【解决方案1】:

基于this answer

该错误意味着您的 Git 推送包含对从未上传到服务器的 Git LFS 对象的引用。(明显地).

尝试运行 git lfs push origin --all 上传所有本地 Git LFS 对象。之后git push 应该可以工作。

【讨论】:

  • 也没有用
  • “没用”到底是什么意思?
【解决方案2】:

我不是真正的 git 专家,但 git lfs migrate 不是用于将您的存储库迁移到新服务器!

而是为了

将现有 Git 存储库转换为使用 Git LFS

但是,就您而言,听起来您的存储库已经使用 LFS,所以你根本不想使用 git lfs migrate


您宁愿做的是将使用 LFS 的现有本地存储库迁移到服务器。

如果我正确理解this post,那么您可以执行以下步骤

git fetch --prune

清理对远程分支的旧引用

默认情况下,当您执行 git fetch 或 git pull 时,git 不会删除对上游存储库中已删除的分支的引用(您可以在 .git/refs/remotes 目录中查看它们)。在将它们镜像到新位置之前,我们需要清理这些旧引用。

为此,请运行

$ git fetch --prune

这将更新您对原始存储库的引用,并清除 git branch -r 报告的陈旧分支。

git push --prune git@example.com:/new-location.git +refs/remotes/origin/*:refs/heads/* +refs/tags/*:refs/tags/*

最后,将存储库镜像到新位置

现在我们准备将这些更新的引用发送回原始存储库:

$ git push --prune git@example.com:/new-location.git +refs/remotes/origin/*:refs/heads/* +refs/tags/*:refs/tags/*

好的,这里刚刚发生了什么?!

我们希望 .git/refs/remotes/origin 中的那些引用成为新位置中的本地引用。那里的本地引用将存储在 refs/heads 目录中。标签也会发生同样的事情。

+ 符号表示我们要覆盖那里可能已经存在的任何引用。

--prune 表示如果我们的 refs/remotes/origin/*(和标签)引用中没有此类引用,我们希望删除可能存在的任何引用。

我想关于 LFS 你会做一个

git lfs push --all https:example.com/new-repository.git

【讨论】:

  • prune 和 gif lfs 不起作用
  • “没用”到底是什么意思?
  • 所以我尝试使用 prune,但出现同样的错误,如果我使用 prune appart push,prune 工作但当我尝试推送时,它是相同的(缺失)问题
猜你喜欢
  • 2017-06-23
  • 2015-01-12
  • 1970-01-01
  • 2011-06-30
  • 1970-01-01
  • 2017-03-27
  • 2011-08-25
  • 2013-06-26
  • 2014-01-03
相关资源
最近更新 更多