什么是.git / info / grafts for?

我试图弄清楚Git中的“嫁接”是什么。

例如,在这里的最新评论之一,Tobu假设使用git-filter-branch.git / info / grafts来join两个存储库。

但我不明白为什么我需要这些移植物 ? 看来,这一切都没有最后两个命令的工作。

来自Git Wiki :

移植点或移植物使另外两条不同的发展线能够连接在一起。 它通过让用户logging虚假的祖先信息进行提交。 通过这种方式,你可以让git假装一个提交的父集与提交创build时logging的不同。

使用嫁接的原因

在将开发移植到git中时,嫁接可能很有用,因为它允许您从其他SCM可选的导入旧历史的克隆。 这为那些只想跟随最新版本的用户保留了最初的克隆,而开发人员可以获得完整的开发历史logging。

当Linus开始使用git来维护他的内核树时,没有任何工具可以转换旧的内核历史。 后来,当旧的内核历史从bkcvs网关导入到git时,创build了嫁接作为使两个不同的存储库结合在一起的一种方法。

当使用git-svn时:

将git树导入Subversion版本库非常有用。

比如我创build了一个本地的Git仓库作为开始。 经过几天的工作,创build了很多提交,我不得不把它发布到中央Subversion版本库,我不想失去历史。

我发现了下面的How-to文章: http : //eikke.com/importing-a-git-tree-into-a-subversion-repository/