【问题标题】:Git remove history information from other repositories?Git从其他存储库中删除历史信息?
【发布时间】:2018-02-16 00:29:22
【问题描述】:

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

【问题讨论】:

    标签: git revision-history


    【解决方案1】:

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

    您可以使用rebase --interactive 并以您想要的方式编辑历史记录,但实际上由于您刚刚开始使用该存储库,您可能应该借此机会取出replace(这是一个潜在的问题黑客)以及.
    因此,您可能应该重新开始重新转换存储库,只接受(和所有)您想要的提交。

    如果你不熟悉这些东西,你最好找人来进行转换,如果你也从一团糟-up 存储库,您正在寻找未来几个月和几年的地狱般体验。


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

    【讨论】:

      猜你喜欢
      • 2019-03-17
      • 1970-01-01
      • 2011-05-29
      • 2015-02-23
      • 2015-06-04
      • 2021-01-09
      • 1970-01-01
      相关资源
      最近更新 更多