使用git保留特定数量的提交历史记录

6

我有一个仓库,里面存放了许多大型二进制文件。是否可能设置git只保留最后n个提交?比如我只想在这个仓库历史记录中保留最近的5个文件副本?但是我非常不想每5个提交就手动进行操作。


1
我有所怀疑,但我喜欢这个想法。 - John Weldon
4个回答

4

唯一的方法是定期重写存储库。

提交包含提交元数据的哈希、提交信息、提交的父级和您正在提交的树。不可能在不影响现在的情况下改变过去的内容。


3
正如 Dustin 所提到的,唯一的方法是定期重写存储库。Git 绝对没有内置支持此功能,也不太可能在短时间内拥有此类支持(其基本设计有点排除了此功能)。这意味着如果您想这样做,您将不得不手动完成。
如果您想尝试一下,回答这个问题展示了如何使用git filter-branch来完成此操作的示例。

2

有点像。 git clone --depth N 可以让你进行“浅层克隆”这个代码库,但是你不能从中推送/克隆/提取,所以对开发人员不是很有用。


我知道这个,但我也不想在任何仓库中保留超过5个副本,不仅仅是克隆。 - Hamza Yerlikaya
这是不可能的,你必须像@Dustin建议的那样重写存储库。我建议您重新评估如何存储这些巨大的文件。也许Git不是最好的解决方案。 - Jim Mitchener

2
使用 "git rebase --interactive" 命令。将前五个提交标记为 "pick",其余的标记为 "squash"。

当从其他仓库拉取时,它也会同步,是吗? - Hamza Yerlikaya
克隆的目录每次更改历史记录时都必须拉取完整的更改历史记录,因此从克隆的存储库进行git fetch可能需要一些时间 - 但是,它们将同步。 - Bombe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接