从git-git命令中删除历史记录失败

Tob*_*oby 7 git github purge

我试图从Git历史清除项目bin目录.我已经将'bin'添加到.gitignore并$git rm --cached -r bin成功运行.现在我尝试使用GitHub帮助页面中建议的命令来清除历史记录:

$ git filter-branch --force --index-filter \
  'git rm --cached --ignore-unmatch bin' \
  --prune-empty --tag-name-filter cat -- --all
Run Code Online (Sandbox Code Playgroud)

但这会导致错误:

Rewrite <hash> (1/164) fatal: not removing 'bin' recursively without -r
index filter failed: git rm --cached --ignore-unmatch bin
rm: cannot remove 'c:/pathToMyLocalRepo/.git-rewrite/revs': Permission denied
rm: cannot remove directory 'c:/pathToMyLocalRepo/.git-rewrite': Directory not empty
Run Code Online (Sandbox Code Playgroud)

没有其他程序持有/转开./ rev在指定的路径中不存在,.git-rewrite 空.

我不确定我应该在哪里添加-r?否则命令不正确?

当然,我确实需要将bin本身保留在本地本地回购中,因为这是我的工作目录.

谢谢

Tob*_*oby 6

好的,所以我需要做的就是将 -r 添加到 rm 命令部分(如下所示)。我这是因为 bin 是一个目录而不是一个文件,所以它必须被递归删除,否则它包含的文件(或关于它们的信息)将是孤立的。

$ git filter-branch --force --index-filter \
  'git rm --cached -r --ignore-unmatch bin' \
  --prune-empty --tag-name-filter cat -- --all
Run Code Online (Sandbox Code Playgroud)

我按照下面的操作将更改推送到 github 上的远程存储库

$ git push origin master --force
Run Code Online (Sandbox Code Playgroud)