清空Git仓库的Commit提交

git是当前最常见的版本控制工具,但出现以下情况时,往往需要清空commits历史记录:

  • commits记录占用空间过大甚至远远超过版本控制文件本身大小,进行云端代码管理时会受制于空间限制,无法继续更新
  • 历史记录中存在敏感信息,需要清理

清理commits历史记录的核心思想是,直接删除本地的.git目录,重新建立git仓库并与远程仓库建立链接,采用强制提交的方式覆盖远程仓库的commits记录。

下面是一段示例,参数说明:

  • $REPO_DIR 表示需要处理的Git仓库本地目录
  • git@github.com:xxxx/$REPO_DIR.git 表示远程仓库地址

进入本地仓库,删除.git目录

1
2
cd $REPO_DIR
rm -rf .git

重新初始化

1
2
git init
git branch -m main

由于Gitlab仓库的默认分支名为main,而仓库初始化默认为master, 所以需要重命名为main.

添加commit

1
2
git add .
git commit -m "restart git commit"

添加远程仓库链接

设置远程仓库代号为origin, 则

1
git remote add orign git@github.com:xxxx/$REPO_DIR.git

注意,此时可用git remote -v检查远程仓库的设置。

强制提交到master分支,覆盖远程仓库的commits历史提交记录

1
2
3
git push -f origin master
or
git push --force origin master

追踪上游分支

1
git push --set-upstream origin main

如果不设置上游分支,再次提交时的commits不能确定跟踪变化,所以不能正常提交博客文章,于是这是一个必须的操作。

参考文章

清空Github仓库的commits历史记录