Git从其他存储库中删除历史信息?

时间:2017-09-07 09:58:49

标签: git revision-history

我试着解释我的问题。 Bevor 2015我们有一个大的SVN存储库,然后有人认为将一些项目移动或复制到一个较小的存储库会很好。 现在我们开始从SVN转到GIT并转换存储库,GIT中的历史记录在项目移动或复制的那天开始。 因为我们还需要旧历史,所以我搜索并发现可以将新存储库的历史记录与旧存储库的历史记录合并。 为此,我使用“git replace”来替换新存储库中的第一个历史条目,其中包含来自大型存储库的历史记录之前的条目,该条目是新历史记录的来源。 这项工作和我只丢失了新存储库的第一个条目,并且在项目从旧历史记录中移除之前的最后一个条目。 但是现在我拥有了大型存储库中所有项目的历史记录,GIT存储库现在非常大。 有没有办法删除不在此存储库中的历史记录和全方位项目? 谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

是。通常从存储库中删除东西是非常有问题的,但是因为你刚开始使用它(所以可能很少有克隆或对当前提交的引用)这可能是你最好的选择。

您可以使用rebase --interactive并按照您希望的方式编辑历史记录,但实际上,因为您刚刚开始使用该存储库,您应该抓住机会取出replace(这可能存在问题) hack)以及 所以你应该重新开始重新转换存储库,只需要(和所有)你想要的提交。

如果你不熟悉这些东西,你最好找到一个人来进行转换,你是否已经在学习git的过程中有了标准的操作,如果你也是从一个混乱的存储库开始,你将在未来几个月和几年内寻找一种地狱般的经历。

另一方面,如果您已经在git存储库上完成了重要的新工作,并且您不想更改该历史记录,那么请保留它并仅重新转换旧历史记录。<登记/> 然后删除之前的replace并添加一个新的链接重新转换的历史记录 请注意,在使用替换时,您不需要丢失任何提交。看得更清楚,或者让更有经验的人去做。我不想在这里做一个详尽的逐步解释,但你基本上必须用相同的副本替换历史的最近部分的第一次提交,除非其父编辑为旧历史记录的最后(最近)提交(当然,在您在较新的存储库中导入旧历史记录的对象之后)。

相关问题