Svn 使用git过滤器分支拆分repo:如何从重命名/移动的文件恢复历史记录?
免责声明:我已经看过了,但它并没有完全回答这个问题 我已经将一个项目从svn迁移到git。当它存在于svn中时,一些文件被移动和/或重命名 在git迁移之后,一些提交仅在git日志中可见——follow 因此: git结构如下所示:Svn 使用git过滤器分支拆分repo:如何从重命名/移动的文件恢复历史记录?,svn,git,history,git-filter-branch,Svn,Git,History,Git Filter Branch,免责声明:我已经看过了,但它并没有完全回答这个问题 我已经将一个项目从svn迁移到git。当它存在于svn中时,一些文件被移动和/或重命名 在git迁移之后,一些提交仅在git日志中可见——follow 因此: git结构如下所示: MyMainRepo/ .git/ XYZ/ ABC/myFile.txt git log ABC/myFile.txt显示: -委员会1 -委员会2 git日志——遵循ABC/myFile.txt显示: -委员会1 -委员会2 -commit3(当时ABC目录不
MyMainRepo/
.git/
XYZ/
ABC/myFile.txt
git log ABC/myFile.txt
显示:
-委员会1
-委员会2
git日志——遵循ABC/myFile.txt
显示:
-委员会1
-委员会2
-commit3(当时ABC目录不存在)
现在,将git回购拆分为不同的ABC git回购时:
git log——遵循ABC/myFile.txt
现在丢失了旧的历史记录,我只有:
- 委员会1
- 委员会2
- 从MyMainRepo中拆分ABC
- 不失去历史
欢迎您提供任何帮助:)在历史上重新命名之后,您可能需要使用一个索引过滤器,其方法与日志评估类似,而不是子目录过滤器。我有一个和。我刚刚遇到了同样的问题,无法获得移动文件夹的完整历史记录,即使使用索引过滤器也是如此 我的解决方法是对在移动之前的某个位置移动的文件夹(ABC)进行单独的子目录导出,然后将此存储库的历史移植到新存储库中 比如说,ABC过去被称为MNO。我克隆了MyMainRepo,重置为MNO仍然存在的版本(在它被重命名为ABC之前)。我使用subdir执行一个过滤器分支,以获得一个名为“MNO”的存储库 在ABC内部,我执行一个
git fetch../MNO
然后,我输入内容移动到ABC时的提交(这将是repo ABC中内容的第一次提交),加上MNO repo中最后一次提交到.git/grafts
现在,我可以在ABC内部对文件进行git登录,并查看历史跟踪,了解它在MNO中的运行情况。下一步是做另一个过滤器分支,使其成为永久性移植,等等。我在这里制作了一个演示移植的屏幕广播(尽管上下文有点不同):
请注意,这必须在每个移动文件夹的基础上完成,这是一项大量的工作,并且最终每个案例都会有一个合并提交。但是git日志是有效的
我写这篇文章有点匆忙,但如果有人对尝试这种方法感兴趣,请告诉我,我会尝试澄清一下,并展示一些更具体的例子。现在似乎位于,现在可能已经移动到,但确实不清楚,因为原始答案没有提供太多关于其示例用法实现的细节。