2011-12-09 85 views
5

可能重复:
How to move files from one git repo to another (not a clone), preserving history的Git回购之间移动文件,同时保留历史

我遵循的步骤在

How to move files from one git repo to another (not a clone), preserving history

和我没有得到的文件移动结束了,但它带来了整个回购的历史!

有没有办法做同样的事情,但只带来相关文件的历史,而不是整个存储库的历史记录?

编辑:

更明确的了解什么,我试图做的,假设有10个文件的存储库,每一个都有1提交它(在日志中这样10个占所有提交)相关联。

我有一个新的存储库,我想将一些文件转移到,让我们说2个。我想从这些文件中提取历史记录的文件,因此我希望在新的回购日志中提供2次来自原始回购的提交。上面使用的方法会带来所有10次提交,即使只有2个文件结束了。

+0

可能的重复http://stackoverflow.com/questions/1365541/how-to-move-files-from-one-git-repo-to-another-not-a-clone-preserving-history –

+3

不是重复 - 我使用该方法,但它带来了整个回购的整个历史,而不仅仅是我导入的文件的历史。 – tpg2114

+1

不是重复的,我有同样的问题 –

回答

0

你试过Subtree Merging

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

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

+1

这似乎并没有保留导入文件的历史记录。 Git blame显示了我编辑的所有合并文件,而不是原作者。而git日志不会显示任何与提交的文件相关的提交。 – tpg2114

+0

该链接已经死亡。最新的是http://git-scm.com/book/ch6-7.html – sukhmel

-4

如果历史记录只有一个提交,为什么不直接提交该文件在新的回购?目前没有历史记录。

+2

这只是一个例子来澄清这一点。我试图从1000多个文件和3年历史的回购中引入2个文件。这就是为什么我要尽量避免把原始回购的整个历史带到一起,我只想要我带来的文件的历史。 – tpg2114

+0

然后,只需为新回购中的每个活动分支分支并提交该时间点存在的内容即可。进行所有您想要的分支共同的根提交。 –

相关问题