我做过Mercurial - >使用快速更新实用程序进行git转换。通过转换,一切都很顺利。当我试图推送到github时,推送被拒绝,因为回购中的一些日志文件太大了。我使用以下方法删除了所有内容:
$> 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 push
时,GitHub仍拒绝推送,因为
显然原木仍然在某处的仓库里。我不能git rm
-r --cached
了,因为它告诉我
fatal: pathspec 'logs' did not match any files
显然他们仍然在回购中的某个地方,但我无法弄清楚在哪里或如何摆脱它们。只有两个分支,所以我认为它们不会隐藏在其他地方。
答案 0 :(得分:2)
git rm --cached
删除您尝试摆脱存储库中 future 提交的文件,但日志文件仍在存储库的历史记录中 。如果它们太大而无法推向GitHub,那么你也需要从历史中对它们进行核对。
您可以使用filter-branch
命令执行此操作,如GitHub's help documentation:
git filter-branch --force --index-filter \
'git rm -r --cached --ignore-unmatch logs/ out/ tmp/' \
--prune-empty --tag-name-filter cat -- --all