【发布时间】:2020-12-18 22:49:30
【问题描述】:
我正在将一个 repo 从 gitlab 迁移到 github,因为我们的 repo 在那里空间不足,而且似乎我们无法扩展它的大小。所以,很自然地,我在 github 上创建了新的 repo,我将 ssh 地址添加到我本地 repo 实例上的现有远程,并尝试调用
git push --mirror github
让它运行几个小时后,它失败了。在研究了为什么会这样之后,我发现它可能太大而无法一次推送,我应该循环一批提交并一次推送一个。在此过程中,对于添加 .gitignore 和 .gitattributes 文件的第一次提交,一切正常。
然而,在这一点之后,我们从实际项目中推送文件,我们已经在推送对 github 来说太大但对 gitlab 来说不是太大的文件,因此它们没有表示在 LFS 中进行跟踪那时。
基本上,我想回顾两年的提交,将 LFS 跟踪添加到这些文件中,在添加文件之前插入此提交,然后让它更新剩余的树。
我尝试将我的 HEAD 重置回那个点,用新的 LFS 数据修改 .gitignore,并在添加文件之前将其推高。但是,在尝试这条路线时,我现在在尝试推送旧提交时遇到错误,因为它说旧提交已过时,需要拉取。
我的要求有可能吗?
【问题讨论】:
-
从技术上讲,您实际上根本无法更改旧提交。你需要做的是做一个新的提交,它和旧的提交很像,但是以 LFS 的方式存储大文件,作为指向外部存储文件的指针(URL 和相关数据)。棘手的一点是,这也需要替换所有 subsequent 提交。 LFS 迁移代码应该可以处理这个问题,但请注意,一旦迁移,您本质上就会拥有一个新的存储库,它永远不应该与带有错误提交的原始存储库混在一起。
标签: git github git-commit migrate git-lfs