解决将旧分支变基到迁移到 Git LFS 的分支时的冲突

Resolving conflicts when rebasing an old branch onto a branch migrated to Git LFS

我有一个存储库(“repo”)需要逐渐迁移到一个新的存储库(“repo-lfs”)。 repo-lfs 使用 LFS 存储大文件,而 repo 没有。

中间状态如下:

repo-lfs: ---------------> main

repo:     ---------------> main
              \_________ release-1.0

现在我想将“release-1.0”分支迁移到 repo-lfs,这需要将 repo:release-1.0 变基到 repo-lfs:main。我已经在 repo-lfs 上添加了 repo 作为远程,但是对于迁移到 Git LFS:

的每个文件的每次更改,天真的 rebase 都会产生冲突
$ git rebase --onto <correct commit on main> repo/main repo/release-1.0
Auto-merging xy.zip
CONFLICT (content): Merge conflict in xy.zip
[...]
Could not apply 96639f9... Edited xy.zip
Encountered 1 file(s) that should have been pointers, but weren't:
        xy.zip

如何以明显的方式自动解决这些“冲突”,即通过将更改应用到 git LFS 中的文件?

我现在可以回答我自己的问题了:

您根本不需要使用 git rebase 并解决由此产生的冲突。 git lfs migrate import 是完全确定性的,可以让您完全避免这个问题。

只要不重写repo的历史,就可以将新分支迁移到repo-lfs,只需将它们签出为repo-lfs和[=中的本地分支即可26=] 与最初用于迁移 main 分支的完全相同的 git lfs migrate import 命令。 Git LFS 将生成与之前为发布分支和 main 之间共享的所有提交生成的完全相同的提交哈希,这意味着新分支将自动附加到正确的父提交,并且生成的历史记录将完美匹配 non-LFS 存储库中的历史记录。