关于github:从git删除历史记录-git命令失败

Removing history from git - git command fails

我正试图从Git历史中清除项目bin目录。我已经将"bin"添加到.gitignore并成功运行$git rm --cached -r bin。现在,我尝试使用github帮助页面中推荐的命令清除历史记录:

1
2
3
$ git filter-branch --force --index-filter \
  'git rm --cached --ignore-unmatch bin' \
  --prune-empty --tag-name-filter cat -- --all

但这会导致错误:

1
2
3
4
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

没有其他程序保持/转速表打开。/指定的路径中不存在revs,并且.git rewrite为空。

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

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

谢谢


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

1
2
3
$ git filter-branch --force --index-filter \
  'git rm --cached -r --ignore-unmatch bin' \
  --prune-empty --tag-name-filter cat -- --all

我按照下面的步骤推动对GitHub上远程回购的更改

1
$ git push origin master --force

唯一有意义的地方是在git rm之后。我自己也没试过,但我认为这应该有效吗?

1
2
3
$ git filter-branch --force --index-filter \
  'git rm -r --cached --ignore-unmatch bin' \
  --prune-empty --tag-name-filter cat -- --all