清空Git历史提交重置为新库

在学会使用GitLab写博客之后,一直工作良好,但是今天发现仓库越来越大,编写博客时速度也越来越慢,原因在于每次commit后git都会形成一个快照,于是除了必备的Hexo部分外这个.git文件夹也是变的越来越大,这个才是导致仓库变大的主要原因,而作为写博客来讲,我是不需要使用commit切换回某个状态的,于是决定重置一下仓库。

  1. 创建新分支

    1
    git checkout --orphan latest

    使用--orpha选择,可创建1个无任何提交历史的清洁分支。新分支可以随意命名,但不要与以前的名冲突,只是网上乱七八糟的文章都相互抄袭,使用master而己,这是github的默认命名,而gitlab的默认名就是main.

  2. 添加所有文件

    1
    2
    3
    git add . 
    or
    git add -A

  3. commit代码

    1
    git commit -m "重置仓库"

  4. 删除原来的主分支(main)

    1
    git branch -D main

  5. 将当前分支重命名为main

    1
    git branch -m main

  6. 推送代码到远程仓库

    1
    2
    git branch --set-upstream-to=origin/main main
    git push -f origin main

    注意:默认gitlab开启了main分支保护,不允许强制push, 此时需要在远程仓库项目时暂时把项目保护关闭才能推送。关闭项目保护的方法: SettingsRepositoryProtected Branches , 在强推成功后一定要重新添加分支受保护。

  7. 从远程拉取新代码(测试之用)

    1
    git pull
    如果别人pull不下来,可以执行
    1
    git pull -r

  8. 确定清除历史记录的结果

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # 查看提交日志
    git log --pretty=oneline
    # 查看分支信息
    # 列出所有本地分支
    $ git branch
    # 列出所有远程分支
    $ git branch -r
    # 列出所有本地分支和远程分支
    # $ git branch -a

    # 查看 tag 信息
    # 查看本地标签
    git tag
    # 查看远程标签
    git ls-remote --tags