git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch upload/*' --prune-empty --tag-name-filter cat -- --all

 
git push origin master --force --all



我们常用的 git rm 仅对 Working Tree 构成影响,如果想永久的删除仓库中的文件或目录,那么就要用到 git filter-branch 命令了。 git filter-branch 会检索整个 Commit 历史,逐一改写 Commit Object,重构整个 Tree。
git filter-branch --tree-filter 'rm -rf path/folder' HEAD git filter-branch --tree-filter'rm -f path/file' HEAD
也可以指定 检索的 Commit 历史的范围:
git filter-branch --tree-filter 'rm -rf path/folder' 347ae59..HEAD
最后,不要忘了向仓库强制推送所有的变化:
git push origin master --force
执行 git filter-branch 命令后,已经标记为删除的 Object 在本地仓库中要到过期后才会解除关联和进行垃圾回收。检查哪些 tags 和 branch 引用了这些 Object:
git for-each-ref --format='delete %(refname)' refs/original
如果想立即解除关联,执行垃圾回收,可以这么做:
git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin git reflog expire --expire=now --all git gc --prune=now
接下来,就是强制推送到仓库了:
git push origin --force --all git push origin --force --tags
不到迫不得已,不要轻易使用 git filter-branch ,因为它重构了整个 Tree

git 删除所有提交下的某个文件的更多相关文章

  1. Git删除已提交的文件

    Git删除已提交的文件 Git删除已提交的文件 定位文件 删除文件 参考链接 昨天通过Git Bash提交代码的时候遇到了由于单个文件大小超过100M,导致代码上传失败的问题.考虑到那个大文件是用于训 ...

  2. [No000073]C#直接删除指定目录下的所有文件及文件夹(保留目录)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. python 删除一个目录下的所有文件

    一个目录下有文件,文件夹,文件夹里又有文件.文件夹....用python脚本,实现,递归删除一个目录下的所有文件: 目录结构如下: 其中我们要删除所有文件 代码实现如下: import os CUR_ ...

  4. C# 删除指定目录下的所有文件及文件夹

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...

  5. linux面试题:删除一个目录下的所有文件,但保留一个指定文件

    面试题:删除一个目录下的所有文件,但保留一个指定文件 解答: 假设这个目录是/xx/,里面有file1,file2,file3..file10 十个文件 [root@oldboy xx]# touch ...

  6. SVN 删除所有目录下的“.svn”文件夹,让文件夹脱离SVN控制

    SVN 删除所有目录下的“.svn”文件夹,将如下语句拷备到记事本,并保存为 *.reg,双击导入注册表,在文件夹右键中就多了一条“Delete SVN Folders”,点击就可以删处此目录下的所有 ...

  7. C#直接删除指定目录下的所有文件及文件夹(保留目录)

    #region 直接删除指定目录下的所有文件及文件夹(保留目录) /// <summary> /// 直接删除指定目录下的所有文件及文件夹(保留目录) /// </summary&g ...

  8. Eclipse中使用GIT将已提交到本地的文件上传至远程仓库

    GIT将已提交到本地的文件上传至远程仓库: 1.  右击项目——Team——Push to Upstream,即可将已保存在本地的文件上传推至GIT远程仓库.

  9. Linux:删除一个目录下的所有文件,但保留一个指定文件

    面试题:删除一个目录下的所有文件,但保留一个指定文件 解答: 假设这个目录是/xx/,里面有file1,file2,file3..file10  十个文件 [root@oldboy xx]# touc ...

随机推荐

  1. hdu1142(dj+记忆化搜索)

    题意:给你n各点,m行关于这些点的联通关系,以及距离,求从1这个点到2这个点之间,下一个点到2这个点比当前点到2这个点的距离要小的路径的条数...... 思路:dj+记忆化搜索....... #inc ...

  2. CSS——div居中,window.open(0

    margin:0 auto 表示什么意思?? margin后面如果只有两个参数的话,第一个表示top和bottom,第二个表示left和right因为0 auto,表示上下边界为0,左右则根据宽度自适 ...

  3. [转]使用rosbridge协议实现安卓跟ros的解耦

    安卓与ROS通信的现状 因为ROS官方支持的语言绑定只有C++和Python,所以目前安卓想与ROS通信,必须借助半官方的rosjava包,而Rosjava太重了,因为它跟C++/Python一样,是 ...

  4. Hadoop-2.2.0中文文档—— MapReduce 下一代 - Encrypted Shuffle

    简单介绍 Encrypted Shuffle capability (加密洗牌功能? )同意用HTTPS 和 可选的client验证 (也称作双向的 HTTPS, 或有client证书的 HTTPS) ...

  5. avrdude: stk500_getsync(): not in sync: resp=0x00

    avrdude: stk500_getsync(): not in sync: resp=0x00错误提示在arduino IDE中非常常见,这个错误代表着就是无法通过USB口与arduino控制板进 ...

  6. kettle的日志

    http://blog.sina.com.cn/s/blog_76a8411a01010u2h.html

  7. 模板题 + KMP + 求最小循环节 --- HDU 3746 Cyclic Nacklace

    Cyclic Nacklace Problem's Link: http://acm.hdu.edu.cn/showproblem.php?pid=3746 Mean: 给你一个字符串,让你在后面加尽 ...

  8. [Java] 一种好的JAVA分页实现

    喃都不说了,贴代码,意思都在代码里面了 Page.java //分页类.定义分页字段信息,供前台页面使用 package com.core.common; import java.util.List; ...

  9. 【BZOJ】1639: [Usaco2007 Mar]Monthly Expense 月度开支(二分)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1639 同tyvj1359,http://www.cnblogs.com/iwtwiioi/p/394 ...

  10. UIWindow小记

    If you choose to create a window in Interface Builder, be sure to select the Full Screen at Launch o ...