如何删除超过 X 天的提交?
我想这样做的原因是 repo 变得非常大,过滤和 gc 不再有帮助,而且我们不再需要超过 5 年的提交。只有 4 名开发人员使用此 repo。
有没有可以自动执行此操作的脚本?
我想到了两个选择:
通过使用参数克隆原始存储库来创建一个新存储库--depth=N
;这将创建一个新的历史记录,仅保留历史记录中的N
最后一次提交。然后,所有开发人员都将切换到这个新的存储库。
要找出N
必须是什么,您可以使用以下内容
git log --format=oneline HEAD@{5 years ago} | wc -l
但是,这将重写您的所有提交 SHA1。
为了保留您的 SHA1,您将使用git replace
,将历史记录分成两部分,遵循此博客文章。