我在这里有一个相当特殊的情况:我有一些旧的仓库在不同的VCSs(git,svn)。我现在想要/必须整理一些事情。如何拆分“历史”git存储库?
目标是将所有内容迁移到单个VCS,并决定使用git。 在第一步中,我使用git svn
将“foreign”VCS历史导入到git中。一切都很好。
另一个问题是用户没有正确使用SVN,因为所有文件(包括生成/编译的文件)都被添加到VCS。因此历史相当庞大而且繁琐。 由于新项目将很快从实际版本开始,我寻找一种解决方案,以避免整个二进制数据保存在git的每个开发仓库中。在另一方面,我不想把一切都扔掉。它可能在未来需要。因为有severar分支,...
我发现的内核也使用了历史拆分信息(请参阅this question on stackoverflow)。 我对Linux内核回购机制进行了一些调整,以了解其中的情况。
现在我不确定是否正确理解了一切,如果我正确地做了这件事。通常我会创建工作副本孤立的分支,并使用这个作为未来任何发展的起点:
git checkout --orphan new_master
<Commit all source files and leave all bin files out>
git remote add new_origin <...>
git push new_origin new_master:master
如果需要旧的历史,我需要克隆新创建的仓库还有“历史”之一。我在git中有两条独立的逻辑链接的工作线。然后为新的回购协议的最初提交添加一个移植文件,以便最终提交历史回购协议,并且应该建立一个完整的回购协议。
我改正了还是有更好的方法?