如何解决如何从git历史记录中删除许多相同格式的文件
我需要从 git 历史记录中删除许多文档文件,例如 *.html 文件
这些经过多年开发的 HTML 文件导致 git repo 膨胀。现在很难每次都检查 10 多 GB。
我能够使用互联网上的脚本找出导致这种膨胀的原因是哪些文件格式,例如
OpenSSH_for_Windows_8.1p1,LibreSSL 3.0.2
使用 grep 分离文档文件格式。我走到了死胡同。
解决方法
您可以使用第三方工具 git filter-repo
(需要 python),带有 callbacks
特别是文件名回调。
- 返回
None
意味着应该从所有提交中删除该文件, - 返回未修改的文件名标记要保留的文件,并且
- 返回不同的名称意味着应该重命名文件。
示例:
git-filter-repo --filename-callback '
if b"/src/" in filename:
# Remove all files with a directory named "src" in their path
# (except when "src" appears at the toplevel).
return None
elif filename.startswith(b"tools/"):
# Rename tools/ -> scripts/misc/
return b"scripts/misc/" + filename[6:]
else:
# Keep the filename and do not rename it
return filename
'
如果您需要查看这些文件的内容(例如,gnumfmt
),则需要一个 bob 回调:
git filter-repo --blob-callback '
if len(blob.data) > 25:
# Mark this blob for removal from all commits
blob.skip()
else:
blob.data = blob.data.replace(b"Hello",b"Goodbye")
'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。