厦门 网站建设企业邮箱,wordpress导航页面,建站系统wordpress下载,wordpress 二级页面关于git仓库的清理#xff0c;主要就是清理git仓库里面的大的二进制文件。网上查了很多教程#xff0c;很多都是用#xff1a;git filter-branch.清理仓库中的大文件。
我尝试着本地测试了一下#xff0c;发现是真慢呀。
方法一、git filter-branch
step1#xff1a;查…关于git仓库的清理主要就是清理git仓库里面的大的二进制文件。网上查了很多教程很多都是用git filter-branch.清理仓库中的大文件。
我尝试着本地测试了一下发现是真慢呀。
方法一、git filter-branch
step1查看又哪些大文件查看前5个大文件
git rev-list --objects --all | grep $(git verify-pack -v .git/objects/pack/*.idx | sort -k 3 -n | tail -5 | awk {print$1})
step2: 从仓库中删除文件或文件夹
git filter-branch --force --index-filter git rm --cached --ignore-unmatch path-to-your-remove-file --prune-empty --tag-name-filter cat -- --all
git filter-branch --index-filter 让每个提交的文件都复制到索引(.git/index)中
然后运行过滤器命令git rm --cached --ignore-unmatch 文件名 让每个提交都删除掉“文件名”文件
然后--prune-empty 把空的提交“修剪”掉
然后--tag-name-filter cat 把每个tag保持原名字指向修改后的对应提交
最后-- --all 将所有ref包括branch、tag都执行上面的重写
step 3删除缓存下来的ref和git操作这一步可以跳过也可以不执行
git for-each-ref --formatdelete %(refname) refs/original | git update-ref --stdin
step4运行git gc清理
git reflog expire --expirenow --all git gc --prunenow --aggressive
step5强制推送到远端
git push --force origin master
反正用这个方法没成功感觉问题出在最后的推送上因为我本地是瘦身成功的。网上搜到一些说是要把分支删得只剩master再操作。
方法二BFG Repo-Cleaner
这个工具很快而且会给出清理文件和受保护分支。清理后的report很清晰推荐使用这个。git很多周边工具还是挺好用的。
环境要求安装了java的机器。
工具下载https://repo1.maven.org/maven2/com/madgag/bfg/1.14.0/bfg-1.14.0.jar 工具拷贝到机器的某个位置可重命名为bfg.jar。
我是直接对gerrit的裸库进行操作的。
step1: 在gerrit服务home目录的git目录下找到对应要瘦身仓库的.git目录。
step2: 运行如下命令(清理大于500M的提交)
java -jar bfg.jar --strip-blobs-bigger-than 500M /usr/local/gerrit/git/common/test.gitstep3: 运行如下命令进行git gc
git reflog expire --expirenow --all git gc --prunenow --aggressive
这样就完成裸库清理启动gerrit服务即可。
我看guide里面最后一步都是强制推送git push origin master --force
我感觉推完我还是没有瘦身成功所以直接在裸库上操作了。 写在最后这个重写git仓库太伤了我不会再操作了退出此江湖。。
附上git对这一块的指导文档写得还是很清晰的Git - 维护与数据恢复