复制git项目时如何重新连接历史记录?

时间:2016-10-28 13:10:16

标签: git github

我有一个从另一个git项目复制的Git项目。它只是一个文件复制和提交,因此它没有复制历史记录。我从以前的文件导入了提交,但是它们没有连接到文件的新版本。因此,如果我查找两个存储库中存在的文件的历史记录,那么历史记录只会复制到我复制项目的时间。

我尝试检查旧项目的最新修订版,然后git合并新项目的第一个修订版。然后我合并为主人。这使得项目的git历史记录看起来正确,但每个人的文件历史记录都没有改变。

这几乎就像我们要删除那些说“"创建所有这些文件"而是预先添加旧项目的历史。

这可以用Git吗?

2 个答案:

答案 0 :(得分:2)

  

预先添加旧项目的历史记录。这可能与Git有关吗?

这应该是可能的,following this answer

它使用了git repository layout中描述的git grafts,但旧答案可能会受益于最近的git replace command。 请参阅“Collating repositories or grafting earlier history with Git

答案 1 :(得分:1)

在我看来,你可以用相当简单的樱桃选择重建历史:

  1. 鉴于遥控器oldnew分别指向新旧回购站
  2. old/master创建一个新分支,该分支位于旧仓库的最后一个修订版
  3. git cherry-pick first..new/master其中first是新仓库中第一次提交的SHA1(您可以使用git log new/master找到它,然后按G跳转到最后)< / LI>

    结果基本上是旧回购中的提交+没有first的新回购中的提交。像往常一样,樱桃选择,提交日期和作者将被保留。