git rm——缓存的文件仍保留在repo中的某个位置
我使用快速更新实用程序进行了Mercurial->git转换。一切都很顺利。当我试图推送到github时,推送被拒绝,因为repo中的一些日志文件太大。我使用以下方法将它们全部删除:git rm——缓存的文件仍保留在repo中的某个位置,git,github,Git,Github,我使用快速更新实用程序进行了Mercurial->git转换。一切都很顺利。当我试图推送到github时,推送被拒绝,因为repo中的一些日志文件太大。我使用以下方法将它们全部删除: $> git branch * master new_admin_gui $> git rm -r --cached logs $> git rm -r --cached out $> git rm -r --cached tmp $> git commit -am "Remove
$> git branch
* master
new_admin_gui
$> git rm -r --cached logs
$> git rm -r --cached out
$> git rm -r --cached tmp
$> git commit -am "Removed files"
$> git checkout new_admin_gui
$> git rm -r --cached logs
$> git rm -r --cached out
$> git rm -r --cached tmp
$> git commit -am "Removed files"
但是,当我执行git推送时,GitHub仍然拒绝推送,因为
很明显,这些日志仍然存在于回购协议的某个地方。我不能git-rm
-r--cached
因为它告诉我
fatal: pathspec 'logs' did not match any files
显然,它们仍在回购协议中,但我不知道在哪里或如何摆脱它们。只有两个分支,因此我认为它们不会隐藏在其他地方。git rm--cached
从存储库中的未来提交中删除您试图删除的文件,但日志文件仍在存储库的历史记录中。如果它们太大而无法推向GitHub,你也需要从你的历史中删除它们
您可以使用过滤器分支
命令执行此操作,如中所述
git filter-branch --force --index-filter \
'git rm -r --cached --ignore-unmatch logs/ out/ tmp/' \
--prune-empty --tag-name-filter cat -- --all