如何重写Git历史以撤消压缩的合并提交?

如何重写Git历史以撤消压缩的合并提交?,git,svn,merge,git-svn,git-rewrite-history,Git,Svn,Merge,Git Svn,Git Rewrite History,我一直在从事一个最近从Subversion迁移到Git的项目。在迁移之前,我一直通过git svn提交Subversion repo。迁移之后,我注意到大量的历史记录丢失了,因为来自主题分支的每个合并提交都被挤压(通过git svn桥,或者由于迁移),丢失了一些我想要保留的提交消息。是否可以使用迁移前repo的本地副本来取消迁移后repo中的合并提交,可能是通过类似于cherry picking的方式?您可以使用git graft来增加压缩提交,另一个父级指向合并到中的真实提交。一旦为所有压缩提

我一直在从事一个最近从Subversion迁移到Git的项目。在迁移之前,我一直通过git svn提交Subversion repo。迁移之后,我注意到大量的历史记录丢失了,因为来自主题分支的每个合并提交都被挤压(通过
git svn
桥,或者由于迁移),丢失了一些我想要保留的提交消息。是否可以使用迁移前repo的本地副本来取消迁移后repo中的合并提交,可能是通过类似于cherry picking的方式?

您可以使用git graft来增加压缩提交,另一个父级指向合并到中的真实提交。一旦为所有压缩提交添加了嫁接,就可以通过使用
git过滤器分支重写git历史来永久合并它们

此答案提供了有关如何执行此操作的详细信息: