如何将 svn 中的提交重播到 git

How do I replay commits in svn to git

我需要重新创建一些从一个 git 存储库到另一个看似无关的存储库的提交。情况如下:

存储库 1 是一个 git-svn 存储库,其中包含我想重播到另一个的提交。从内容上讲,它是自我们标记发布以来在支持分支中创建的补丁集合。

存储库 2 是一个普通的 git 存储库,它是从我们的旧 svn 存储库(与存储库 1 相同)创建的,它还包含作为 git 标签的标记版本

最终,我想要实现的是将旧 svn 的补丁分支重新创建到新的 git 存储库中,并可以访问各个提交。我需要做的是从标签创建一个分支(简单),然后将 svn/git-svn 世界中当前的所有提交重播到这个补丁分支中。

到目前为止,我从原始标签在当前 git 仓库中创建了标签,此外,我在它旁边有 git-svn 仓库并添加了 git-svn repo 作为远程。然后我创建了另一个分支,该分支是从那个远程签出的。 (我从 Easiest way to replay commits on new git repository

得到这个想法

我天真地以为可以合并两个分支,但这似乎行不通。首先,git merge 不想合并不相关的历史记录,如果我告诉它忽略它,会发生的情况是所有文件作为一个整体或多或少地被复制,所有标记为冲突。

所以,最终的问题是,我可以将这些提交传输过来吗?由于我们谈论的是 100 多次提交,我不想手动执行此操作。

解决方案实际上在 Easiest way to replay commits on new git repository

中有完整描述

基本上,将旧存储库添加为远程。将其作为一个新分支签出,将此分支重新定位到提交应该去的新分支上。签出新分支并将其与重新设置的分支合并。

也感谢@eftshift0对同一方向的提示。