git是当前最常见的版本控制工具,但出现以下情况时,往往需要清空历史commits记录:
- commits记录占用空间过大甚至远远超过版本控制文件本身大小,进行云端代码管理时会受制于空间限制,无法继续更新
- 历史记录中存在敏感信息,需要清理
清理历史commits记录的核心思想是,直接删除本地的.git目录,重新建立git仓库并与远程仓库建立链接,采用硬提交的方式覆盖远程仓库的commits记录。下面是一段示例脚本。
参数说明:
- $REPO_DIR 表示需要处理的Git仓库本地目录
- [email protected]:xxxx/$REPO_DIR.git 表示远程仓库地址
则可以按照如下步骤处理:
进入本地仓库,删除.git目录
cd $REPO_DIR
rm -rf .git
重新git初始化并添加commit
git init
git add * # 重新添加所有的文件
git commit -m "restart git commit"
添加远程仓库链接
在添加远程仓库时,需要设置远程仓库的代号,本教程记为origin.
git remote -add origin [email protected]:xxxx/$REPO_DIR.git
硬提交,覆盖远程仓库的commits历史记录
假设提交到远程仓库的master分支,则硬提交脚本如下:
git push -f origin master
硬提交之后,再看远程仓库master分支的commits记录就变成1了。
至此,大功告成~