问题描述
我想知道是否有办法使用 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”的所有文件