go项目的包管理依赖从glide+仓库vendor迁移成go mod,通过glide.yaml 和glide.lock 文件使用
go mod init
go mod tidy
可以轻松生成对应的go.mod 和go.sum 依赖管理文件,后续使用go mod pkg 管理即可,剩下的vendor 也需要使用 git rm 删除 ,删除后留下的.git 仓库索引依然很大,因此需要对历史进行重写
git如何永久删除历史文件(不小心提交的密码 vendor 二进制等 均可以删除) 如果知道要删除的文件可使用如下命令(实际使用过程把vendor 替换成自己的文件路径, 我这里不保留cache到磁盘 )
git filter-branch --force --index-filter 'git rm -rf --ignore-unmatch vendor' --prune-empty --tag-name-filter cat -- --all
如果要保留文件到磁盘可使用
git filter-branch --force --index-filter 'git rm --cached -r --ignore-unmatch vendor' --prune-empty --tag-name-filter cat -- --all
如果不知道要删除的文件是哪个导致仓库大可先查找大文件(也可以用bfg工具)
git rev-list --objects --all | grep "$(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk '{print$1}')"
修改可能需要很久,完成后出现类似下面的提示就标示删除成功 Rewrite xxxx (266⁄266)
Ref ‘refs/heads/master’ was rewritten
强制推送到remote git push origin master –force 接下来对git 仓库进行瘦身,命令如下:
rm -rf .git/refs/original/
git reflog expire --expire=now --all
git gc --prune=now
git gc --aggressive --prune=now
截止执行最关键的一步,也是最危险的一步(同步.git到远端),好多人说执行完上面的remote的仓库大小不变,重新克隆下来依然很大,其实是因为没有同步gc 后的仓库到远端,执行:
**git push --mirror**
参考: Git如何永久删除文件(包括历史记录) 从仓库的历史记录中删除文件 git瘦身 彻底删除 Git 仓库中的文件避免占用大量磁盘空间 BFG an alternative to git-filter-branch 如何瘦身 Git 仓库 progit
本文链接:https://iokde.com/post/git-del-bigfile-from-history.html,参与评论 »
--EOF--
发表于 2021-01-15 15:23:00。
本站使用「署名 4.0 国际」创作共享协议,转载请注明作者及原网址。tools更多说明 »
提醒:本文最后更新于 1236 天前,文中所描述的信息可能已发生改变,请谨慎使用。
Comments