代码之家  ›  专栏  ›  技术社区  ›  Joe

删除“旧”项目断开的Git历史记录

git
  •  0
  • Joe  · 技术社区  · 6 年前

    我通过复制现有代码创建了一个新项目。通常,我会克隆一个新的空存储库,从现有的类似项目中复制文件(不带.git文件夹),并删除所有相关文件。初始提交将是所有没有内容的工具/设置内容。

    我不知怎么搞砸了-我们的CI只是试图发布1.0.0版本,但失败了,因为这个标签已经存在于Git中。它存在于我所接手的项目的历史上,在实际项目提交之前,不知何故,它是不连贯的:

    enter image description here

    新项目的初始提交是一个完整的提交——即,它不是现有提交的“顶层”。它不是删除文件,只是添加新版本。所以新旧历史完全脱节了。

    不知道我是怎么做到的!

    移除旧历史和标签的最佳方法是什么?我应该手动删除标签吗?

    1 回复  |  直到 6 年前
        1
  •  0
  •   ikkentim    6 年前

    如果没有分支引用旧提交,并且没有标记附加到旧提交,并且新的初始提交不是旧代码的“子”提交(因此它没有父提交),则所有旧提交都是孤立的。

    在屏幕截图中,仍然可以看到一些附加到旧提交的标记。

    删除这些标签后( git tag -d TAGNAME && git push --delete origin TAGNAME )您可以在本地使用垃圾收集那些旧的提交 git gc --prune=now --aggressive . 您可能还需要在遥控器上进行垃圾收集。 Github according to this answer 自动定期运行GC。如果内存服务良好,Gitlab在项目设置中提供了一个选项。对于其他服务提供者,请参考其关于如何执行GitGC的手册。