码迷,mamicode.com
首页 > 其他好文 > 详细

初次使用 git 的“核弹级选项”:filter-branch 从仓库中删除文件

时间:2014-12-18 20:36:24      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:style   http   ar   color   使用   sp   on   文件   div   

当初看 Pro Git 时就被作者这个“核弹级选项”的称呼吓到了,因此一直没敢好奇地去尝试。核弹啊,用对了威力无穷,用错了破坏力无穷!

但是,今天,我不得不用了,因为我想把我的原来写一些代码放到 github 上去公开。由于之前没想过要公开,到上传时才发现不能上传大于50M的文件。

折腾了半天,还是无法上传,于是,整个命令出来了:

 git filter-branch --tree-filter rm -rf files_to_remove --prune-empty -f HEAD --all

命令挺复杂的,所以我是在一个 clone 出来的仓库里先试运行。先解释下各个参数:

  • --tree-filter表示修改文件列表。
  • --msg-filter表示修改提交信息,原提交信息从标准输入读入,新提交信息输出到标准输出。
  • --prune-empty表示如果修改后的提交为空则扔掉不要。在一次试运行中我发现虽然文件被删除了,但是还剩下个空的提交,就查了下 man 文档,找到了这个选项。
  • -f是忽略备份。不加这个选项第二次运行这个命令时会出错,意思是 git 上次做了备份,现在再要运行的话得处理掉上次的备份。
  • --all是针对所有的分支。

试运行了几次,看到 40 多次提交逐一被重写,然后检查下,发现要删除的文件确实被删除了。于是高兴地到 github 建立新仓库,并上传了。

折腾完毕,我更加喜欢 git 了 :-)

初次使用 git 的“核弹级选项”:filter-branch 从仓库中删除文件

标签:style   http   ar   color   使用   sp   on   文件   div   

原文地址:http://www.cnblogs.com/flying_bat/p/4172435.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!