Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.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 repo添加旧版本的代码_Git - Fatal编程技术网

向git repo添加旧版本的代码

向git repo添加旧版本的代码,git,Git,我的项目有一个git回购协议,我的第一次提交是在v1.2。在git之前,我使用代码的每日快照来保证它的安全。现在,我想将所有快照添加到repo中,并从v0.3开始,但在1.2之上,我已经有很多提交。那么,最好的方法是什么呢?我应该一个接一个地提交快照并添加标记吗?或者我应该为所有这些快照创建另一个分支吗?或者可以使用v0.3启动一个新的repo并提交所有快照,然后以某种方式将repo与基于1.2的旧repo合并?您可以git filter branch--parent filter将您的工作移植

我的项目有一个git回购协议,我的第一次提交是在v1.2。在git之前,我使用代码的每日快照来保证它的安全。现在,我想将所有快照添加到repo中,并从v0.3开始,但在1.2之上,我已经有很多提交。那么,最好的方法是什么呢?我应该一个接一个地提交快照并添加标记吗?或者我应该为所有这些快照创建另一个分支吗?或者可以使用v0.3启动一个新的repo并提交所有快照,然后以某种方式将repo与基于1.2的旧repo合并?

您可以
git filter branch--parent filter
将您的工作移植到旧版本上,但如果您与其他人共享repo,则会出现问题。一切都会得到一个新的SHA。真的没有办法避免这一点:父母(回到原始版本)是每个版本的SHA的一部分。如果你不在乎(如果这是你自己的个人回购),那就去做吧

在中有一个例子可以让你做你想做的事情。

如果你没有公开这个故事,这绝对是一个好方法

另一方面,如果您已经发布了当前存储库,因此不想将其根提交移植到以前的工作中,我建议使用不相交的方法。我个人很想在存储库中创建另一个分支,称为“legacy”或类似的分支,从新的根目录开始,使用第一个快照提交,然后在上面提交所有其他分支。这里的主要用途大概是归档该工作,并可能在某个时候检查或传播它——即使历史有点奇怪,您也可以做到这一切:

# No commits in common!

- o - o - o - o - o (master)

- o - o - o (legacy)

就像这个想法一样,它非常干净,是的,这里的主要用途是存档。当我最初回答时,我忘记了
。git/info/grafts
:。然而,这样做的缺点是,每个用户都必须手工移植到“遗留”上,但它与此解决方案配合得很好。