2014-04-03 87 views
1

我犯了一个大文件的删除。现在我想从我的本地.git中取出这个大文件。任何可以遵循的步骤都可行?如何从提交历史中完全删除文件?

我想:

git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch$files" HEAD 

git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch $file' --prune-empty --tag-name-filter cat -- --all 
+0

命令'GIT中滤波器分支--force --index滤波器 'git的RM --cached - 忽略UNMATCH $ Rake文件' --prune-空--tag-name-filter cat - --all'适用于我。处于repo-root目录和$ Rakefile中,包括要删除的文件的相对路径。 'linux,git version 2.6.4'。 – dr0i

回答

0

您正在寻找神奇的git的命令是git filter-branch,它可以让您编辑混帐回购协议。在实施例第一个例子是:

Suppose you want to remove a file (containing confidential information 
    or copyright violation) from all commits: 

     git filter-branch --tree-filter 'rm filename' HEAD 
+0

无法创建新的备份。 以前的备份已经存在于refs/original/ 强制覆盖备份-f – Paul

+0

添加'-f'作为该参数强制执行的东西,所以:'git filter-branch -f --tree-filter' rm文件名'HEAD' – dr0i