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

问题描述

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

解决方法

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

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

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

,

如果您想通过新提交删除文件,请执行以下操作:

~/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”的所有文件

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...