<
Git filter Branch 在历史 commit 彻底删除大文件
>
上一篇

更换 apt 源为阿里源
下一篇

批处理 for与set问题 延迟环境变量扩展

如果我们需要删除commit可以用到 git rebase , 改写前一个提交可以用到git commit --amend , 但是如果删除某个历史中的一个文件却没这么简单能做到

可以用到命令 git filter-branch ,

从git仓库中彻底删除文件,例如误提交的账号密码配置文件或不必要的大文件等,
还可以修改作者/邮箱/时间,commit信息等,
看名字就知道这是个过滤器,至于怎么用呢

是需要带上过滤的参数后,再加上需要执行的命令

这是一个删除文件的例子

git filter-branch --force --index-filter "git rm --cached --ignore-unmatch resume/resume.pdf" --prune-empty --tag-name-filter cat -- --all

使用命令都在这里

git filter-branch [--setup <command>] [--env-filter <command>]
        [--tree-filter <command>] [--index-filter <command>]
        [--parent-filter <command>] [--msg-filter <command>]
        [--commit-filter <command>] [--tag-name-filter <command>]
        [--subdirectory-filter <directory>] [--prune-empty]
        [--original <namespace>] [-d <directory>] [-f | --force]
        [--] [<rev-list options>…​]

先简单描述一下,是命令,意思就是在*-filter过滤器下遍历rev-list指定的节点的提交,在符合条件的提交执行命令改写提交

接下来分析一下

首先

然后是过滤器

接着

还有

最后

Top
Foot