删除历史 commit 记录

删除历史 commit 记录

笔记作者:BrickLoo

需求

  • GitHub Pages 托管的网站由于是公开仓库,涉及个人隐私的历史 commit 记录希望删除;
  • 删除 .git/ 文件夹在大部分情况下是可行的方案,但是在使用到 submodules 的时候可能会遇到问题;

步骤

1. 按需备份 .git/ 文件夹

2. 创建全新分支

git checkout --orphan newBranch

3. 提交所有本地文件

git add -A  # Add all files and commit them
git commit

4. 删除旧分支

git branch -D main  # Deletes the main branch

5. 将新分支重命名为旧分支

git branch -m main  # Rename the current branch to main

6. 彻底删除旧分支记录

git gc --aggressive --prune=all  # remove the old files
git reflog expire --expire-unreachable=all --all  # free disk space

7. 使用强制推送上传到 GitHub

git push -f origin main  # Force push main branch to github

参考资料