Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
复制git项目时如何重新连接历史记录?_Git_Github - Fatal编程技术网

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

复制git项目时如何重新连接历史记录?,git,github,Git,Github,我有一个从另一个Git项目复制的Git项目。它只是一个文件复制和提交,所以它没有复制历史记录。我已经从以前的文件导入了提交,但是它们没有连接到文件的新版本。因此,如果我查找两个repo中存在的文件的历史记录,历史记录只会出现在我复制项目时 我尝试签出旧项目的最后一个版本,git合并了新项目的第一个版本。然后我合并成了大师。这使得项目的git历史看起来是正确的,但每个人的文件历史都是不变的 这几乎就像我们想要删除上面写着“创建所有这些文件”的修订版,而不是预先添加旧项目的历史记录 这在Git中是可

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

我尝试签出旧项目的最后一个版本,git合并了新项目的第一个版本。然后我合并成了大师。这使得项目的git历史看起来是正确的,但每个人的文件历史都是不变的

这几乎就像我们想要删除上面写着“创建所有这些文件”的修订版,而不是预先添加旧项目的历史记录

这在Git中是可能的吗

预编旧项目的历史记录。这在Git中是可能的吗

那应该是可能的

它使用了中描述的
git嫁接
,但旧的答案可能会从最近的答案中受益。

请参见“”

在我看来,您可以用一个相当简单的方法重建历史:

  • 给定分别指向旧回购协议和新回购协议的远程
    old
    new
  • 从旧回购协议的最后一次修订版的
    old/master
    创建一个新分支
  • git cherry pick first..new/master
    其中
    first
    是新回购中第一次提交的SHA1(您可以使用
    git log new/master
    找到它,然后按
    G
    跳到末尾)
  • 结果将基本上是旧回购中的提交+新回购中的提交,而不首先执行
    。和往常一样,提交日期和作者将被保留