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

时间:2019-02-19 15:11:57

标签: git

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

我已经以某种方式搞砸了-我们的CI刚刚尝试执行1.0.0版本,但由于git中已经存在该标签而导致失败。它存在于我所研究的项目的历史中,因此在实际的项目提交之前就不知不觉地闲逛了:

enter image description here

新项目的初始提交是一个完整的提交-即,它不在现有提交的“顶部”。它不是删除文件,而是添加新版本。因此,新旧历史完全脱节了。

不知道我是如何管理的!

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

1 个答案:

答案 0 :(得分:0)

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

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

在删除这些标签(git tag -d TAGNAME && git push --delete origin TAGNAME)之后,您可以使用git gc --prune=now --aggressive在本地对那些旧提交进行垃圾收集。您可能还必须在遥控器上进行垃圾回收。 Github according to this answer自动定期运行gc。如果内存对我有用,则gitlab在项目设置中提供一个选项。对于其他服务提供商,请查阅其手册以了解如何执行git GC。

相关问题