在保留历史记录的情况下,在Git仓库之间移动文件

6

可能是重复的问题:
如何将文件从一个git仓库移动到另一个(不是克隆),同时保留历史记录

我按照以下步骤进行:

如何将文件从一个git仓库移动到另一个(不是克隆),同时保留历史记录

我确实成功地将文件移动了过去,但它带来了整个仓库的历史记录!

有没有办法只带相关文件的历史记录而不是整个仓库的历史记录呢?

编辑:

为了更明确我的目标,假设一个仓库中有10个文件,每个文件都有1个关联的提交(因此日志中总共有10个提交)。

我有一个新的代码库,想要将其中的一些文件转移到另一个代码库,假设是其中的两个文件。我希望带着这些文件的历史记录一起转移过去,因此我期望在新代码库的日志中能看到来自原始代码库的两个提交。但上述方法会将所有10个提交都转移过来,即使只有2个文件被转移。

可能是与https://dev59.com/z3M_5IYBdhLWcg3wdy_z重复的问题。 - Adrian Cornish
3
不是重复的——我使用了那种方法,但它带来的是整个仓库的完整历史记录,而不仅仅是我导入的文件的历史记录。 - tpg2114
1
不是重复的,我有同样的问题。 - Tom Tanner
2个回答

0

你尝试过子树合并吗?

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

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


1
似乎无法保留导入文件的历史记录。Git blame显示所有合并的文件都被我编辑过,而不是原始作者。而且git log也没有显示与导入文件相关的任何提交记录。 - tpg2114
那个链接已经失效了。最新的链接是http://git-scm.com/book/ch6-7.html。 - sukhmel

-7
如果历史记录只有一个提交,为什么不在新的存储库中提交该文件呢?此时已经没有历史记录了。

2
那只是一个例子,为了澄清这一点。我正在尝试从一个有1000多个文件和3年历史记录的repo中带来2个文件。这就是为什么我试图避免带来原始repo的整个历史记录,我只想要我带来的文件的历史记录。 - tpg2114
然后,只需为新存储库中的每个活动分支创建一个分支,并提交该时间点存在的内容。创建一个根提交,该提交对您想要的所有分支都是共同的。 - Adam Dymitruk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接