GIT - 清除历史 Commit 瘦身仓库

目录

一.引言

二.仓库清理

[◆ 创建一个船新分支](#◆ 创建一个船新分支)

[◆ 提交最新代码](#◆ 提交最新代码)

[◆ 双指针替换分支](#◆ 双指针替换分支)

三.总结


一.引言

由于项目运行时间较长,分支较多,且分支内包含很多不同的大文件,随着时间的推移,历史 Git 库的容量日渐增发,objects 里 pack 就高达 3G +,如果从头往下 pull 项目要花好久,下面开始项目瘦身。

Tips:

请确保待瘦身删除内容不涉及到 git reset 回退且不会再用到,否则删除了无法恢复

二.仓库清理

网上大佬们给了几种清理方法:

**filter-branch:**filter-branch 剔除指定的类型文件,并重写commitId。

BFG Repo-Cleaner: 仓库清理工具,筛选清理大文件对象。

这里博主直接偷懒了,由于之前很多提交已经无关紧要,所以我们直接将之前的提交抹去

◆ 创建一个船新分支

--orphan 会创建一个全新的分支,其与其他分支都没关系,也没有任何提交记录。可以理解为是一个纯净的空分支,我们后续只保留最新代码在该分支。

python 复制代码
git checkout --orphan <new-branch-name>

=> Switched to a new branch 'CleanGit'

◆ 提交最新代码

-A 会把本地的代码、文件全部推送到当前分支,在未 commit 之前,当前分支包含 0 个 commit,是全新的分支。

bash 复制代码
git add -A
git log

=> fatal: your current branch 'CleanGit' does not have any commits yet

git commit -am "Initial commit"

=> [CleanGit (root-commit) 96dc82a] Initial Commit
=> 137 files changed, 21462 insertions(+)

◆ 双指针替换分支

删除本地分支 -> 将当前分支重命名 -> 强制推送至远程分支,这个有点像 python 的双指针赋值 a, b = b, a,相当于做了一次轮转,把老的 commit 全部 -f 冲掉了。

python 复制代码
git branch -D <old-branch-name>
git branch -m <old-branch-name>
git push -f origin <old-branch-name>

三.总结

重复上述步骤,把 commit 多的分支清空或者删除,缩减 git 容量。不过最好还是在根源处避免在 git 中上传过大的文件。

相关推荐
siqiangming10 小时前
将SVN项目迁移到Git,保留提交记录
git·svn
CCPC不拿奖不改名11 小时前
两种完整的 Git 分支协作流程
大数据·人工智能·git·python·elasticsearch·搜索引擎·自然语言处理
南方者11 小时前
【Sourcetree】【Git】提交后无法推送,优雅回滚
git·版本管理·sourcetree·回滚·贮藏
lpfasd12312 小时前
PyGithub用法详解
git·python·github
一品威客网13 小时前
版本控制(Git):APP协同开发的四大核心基石
大数据·git
007张三丰14 小时前
git中的SSH 公钥配置详细指南(GitHub、GitLab、Gitee平台适用)
git·ssh·github
yue00815 小时前
git使用
git
tianlebest16 小时前
git action
大数据·git·elasticsearch
花间相见19 小时前
【JAVA开发】—— Git常用操作
java·开发语言·git
liu_sir_19 小时前
android9.0 amlogic 遥控器POWER按键的假待机的实现
开发语言·git·python