Maison > Questions et réponses > le corps du texte
如题,累积有半年没 push 到 github 了,由于里面有几个 jar 没忽略,越来越多,push 后会报:
Counting objects: 4779, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3903/3903), done.
error: RPC failed; result=56, HTTP code = 200 | 14.92 MiB/s
fatal: The remote end hung up unexpectedlyMiB | 158.00 KiB/s
Writing objects: 100% (4779/4779), 628.84 MiB | 152.00 KiB/s, done.
Total 4779 (delta 2353), reused 3 (delta 0)
fatal: The remote end hung up unexpectedly
Everything up-to-date
搜了一些方法,像什么换 ssh 之类,都无效,请问有什么简单办法抛弃掉历史记录,只把当前的版本 push 上去?
实在没办法只好重新 clone 再覆盖,但线上也有几百兆,能有什么命令参数简单抛弃掉就最好了。
找到一个办法 https://www.kernel.org/pub/software/scm/git/docs/git-filter-branch.html 可以清理历史,目前正尝试,OK 后再来续写。
伊谢尔伦2017-05-02 09:33:58
J'ai finalement trouvé un moyen simple. Utiliser la commande filter-branch fournie avec git peut filtrer et supprimer, mais c'est trop lent, je l'ai exécuté toute la nuit et cela ne s'est pas terminé, bloqué à 98 % de progression. Plus tard, j'ai trouvé l'outil BFG Repo-Cleaner et je l'ai supprimé en quelques minutes. La taille du répertoire .git a été réduite d'environ 2,9 Go à 70 Mo. J'ai supprimé tous les fichiers tar.gz, zip, jar, war, etc. dans le passé. Laissez le code source derrière vous et envoyez-le enfin sur github.
Le processus d'exécution spécifique est :
bfg --delete-files *.tar.gz # 后面的文件名匹配可换成自己要删除的文件名
git reflog expire --expire=now --all
git gc --prune=now --aggressive
git push --all --force
git push --all --tags --force