解决将旧分支变基到迁移到 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 存储库中的历史记录。
我有一个存储库(“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 存储库中的历史记录。