我的项目有一个git repo,我的第一次提交是在v1.2。在git之前我使用我的代码的每日快照来保证它的安全。我现在想要将所有快照添加到repo中以及启动v0.3,但我已经在1.2之上提交了相当多的提交。那么最好的方法是什么?我应该逐个提交快照并添加标签吗?或者我应该为所有这些快照创建另一个分支?或者也许用v0.3启动一个新的repo并提交所有快照,然后以某种方式将repo与旧的1.2合并?
答案 0 :(得分:5)
Ben's answer绝对是一个很好的方法。
另一方面,如果您已经发布了当前的存储库,因此不希望将其根提交移植到以前的工作中,我会建议一些不相交的东西。我个人很想在存储库中创建另一个名为“legacy”的分支,或者其他一些分支,在你的第一个快照的新根提交中启动它,并在其上提交所有其他分支。据推测,这里的主要用途就是归档那些工作,并且可能在某些时候检查它或者对它进行区分 - 即使历史有点奇怪,你也能够完成所有这些工作:
# No commits in common!
- o - o - o - o - o (master)
- o - o - o (legacy)
答案 1 :(得分:4)
您可以git filter-branch --parent-filter
将您的作品移植到旧版本上,但如果您与其他人共享您的回购邮件,则会导致问题。一切都会得到一个新的SHA。实际上没有办法避免这种情况:父母(回到原始版本)是每个版本的SHA的一部分。如果你不关心(如果这是你自己的个人回购),那就去吧。
git help filter-branch
中有一个示例可以帮助您完成所需的操作。