在 Git 中删除超过 90 天的文件版本

Posted

技术标签:

【中文标题】在 Git 中删除超过 90 天的文件版本【英文标题】:Removing versions of files older than 90 days in Git 【发布时间】:2020-12-24 16:41:01 【问题描述】:

我想知道是否有办法使用 Git 中的任何设置或某种保留策略来删除超过 90 天的某些版本的文件?

【问题讨论】:

从存储库、工作树中删除什么? 你好@ArkadiuszDrabczyk,是的,来自存储库。 我认为 Git 没有为此明确提供任何功能。如果他们提供,您必须与您的存储库管理平台(github/bitbucket 等)核实。 【参考方案1】:

不,没有。 Git 旨在无限期地保留历史记录,因为每次提交的对象 ID 都是一个加密哈希,它隐含地涵盖了到那时为止的整个历史记录。

可能有外部工具可以做到这一点,但它们必然会重写整个历史记录并更改每次提交的哈希值。

如果您的目标是删除一些敏感信息,GitHub has documentation on how to do this 以及许多其他工具也可以做到这一点。

【讨论】:

【参考方案2】:

如果您想使用新的提交删除文件,请点击此处:

~/bin/git-delete-files-older-then.sh //

#!/bin/bash                                                                      
                                                                                 
date=$1                                                                          
git ls-files | while read path                                                   
do                                                                               
  if [ "$(git log --since \"$date\" -- $path)" == "" ]; then                     
    rm "$path"                                                                   
  fi                                                                                                                                                                                                        
done  

chmod +x ~/bin/git-delete-files-older-then.sh

bash(或 zsh ...)

cd /your/dir/YOUR_GIT_PROJECT/foo/

git-files-older-then.sh "2019-01-01" // 这将删除“foo”目录中早于“2019-01-01”的所有文件

【讨论】:

以上是关于在 Git 中删除超过 90 天的文件版本的主要内容,如果未能解决你的问题,请参考以下文章

删除超过 7 天的文件

在Unix中使用shell脚本删除超过10天的文件[重复]

Linux 删除早于相同时间的文件

如何从 iPhone 的文档目录中删除超过两天的文件

删除超过多少天的日志文件或者备份文件

当“参数列表太长”时如何删除所有超过 3 天的文件?