在Git repo之间移动文件,同时保留历史记录

在Git repo之间移动文件,同时保留历史记录,git,merge,git-filter-branch,Git,Merge,Git Filter Branch,可能重复: 我跟着台阶走 我确实把文件移了过去,但它带来了回购协议的整个历史 是否有一种方法可以做同样的事情,但只带来关联文件的历史记录,而不是存储库的整个历史记录 编辑: 为了更明确地说明我要做的事情,假设存储库中有10个文件,每个文件都有一个与之关联的提交(因此日志中总共有10个提交) 我有一个新的存储库,我想把一些文件转移到其中的两个。我想把这些文件和这些文件的历史一起带过来,所以我希望在新的repo日志中有两个来自原始repo的提交。上面使用的方法可以完成所有10个提交,即使只提交了

可能重复:

我跟着台阶走

我确实把文件移了过去,但它带来了回购协议的整个历史

是否有一种方法可以做同样的事情,但只带来关联文件的历史记录,而不是存储库的整个历史记录

编辑:

为了更明确地说明我要做的事情,假设存储库中有10个文件,每个文件都有一个与之关联的提交(因此日志中总共有10个提交)

我有一个新的存储库,我想把一些文件转移到其中的两个。我想把这些文件和这些文件的历史一起带过来,所以我希望在新的repo日志中有两个来自原始repo的提交。上面使用的方法可以完成所有10个提交,即使只提交了2个文件

你试过了吗

子树合并 子树合并的思想是有两个项目,其中一个项目映射到另一个项目的子目录,反之亦然。当您指定子树合并时,Git通常非常聪明,能够确定其中一个是另一个的子树,并进行适当的合并

我们将通过一个示例,向现有项目中添加一个单独的项目,然后将第二个项目的代码合并到第一个项目的子目录中


如果历史记录只是一次提交,为什么不在新的repo中提交该文件呢?此时没有历史记录。

这似乎无法保留导入文件的历史记录。Git将所有合并的文件显示为由我编辑,而不是由原始作者编辑。git日志没有显示任何与提交的文件相关的提交。该链接已经失效。最新的可能是重复而不是重复——我使用了这种方法,但它带来了整个回购的整个历史,而不仅仅是我导入的文件的历史。不是重复,我有相同的问题,这只是一个例子来澄清这一点。我正试图从一个有1000多个文件和3年历史的回购协议中获得2个以上的文件。这就是为什么我试图避免带上原始回购协议的全部历史记录,我只想要带过来的文件的历史记录。然后只为新回购协议中的每个活动分支进行分支,并提交当时存在的内容。创建一个对所有您想要的分支都通用的根提交。