背景
很多时候,我们经常会不小心把一个不应该add进来的文件 add到 Repo里了。比如:
password.txt,.log .mp4 等等。
解决办法
这种情况下,我们可以选择用 git filter-branch 来将历史的所有commit都重新过滤一下。
查看Git的文档得知,filter-branch是一个核弹级操作:
如果你想用脚本的方式修改大量的提交,还有一个重写历史的选项可以用——例如,全局性地修改电子邮件地址或者将一个文件从所有提交中删除。
这个命令是filter-branch,这个会大面积地修改你的历史,所以你很有可能不该去用它,除非你的项目尚未公开,没有其他人在你准备修改的提交的基础上工作。
尽管如此,这个可以非常有用。你会学习一些常见用法,借此对它的能力有所认识。
从所有提交中删除一个文件
这个经常发生。有些人不经思考使用git add .,意外地提交了一个巨大的二进制文件,你想将它从所有地方删除。
也许你不小心提交了一个包含密码的文件,而你想让你的项目开源。filter-branch大概会是你用来清理整个历史的工具。
要从整个历史中删除一个名叫password.txt的文件,你可以在filter-branch上使用–tree-filter选项
Example:把历史中不小心添加进来的所有mp4文件清除。
|
|