文章

清理 GitHub 仓库历史提交记录

本文介绍如何清理 GitHub 仓库历史提交记录,给项目重新开始一个清晰的提交历史。

清理 GitHub 仓库历史提交记录

在实际开发中,我们有时会需要清理项目的历史提交记录,比如:

  • 隐藏敏感信息(如泄露的密码、API Key 等)
  • 优化仓库大小,移除冗余的提交记录
  • 给项目重新开始一个清晰的提交历史

本文将详细介绍如何清理 GitHub 项目的历史提交记录,并保留当前文件内容。


⚠ 注意事项

  • 操作不可逆:清理提交记录会永久删除历史提交,无法恢复,请提前备份!
  • 影响协作者:其他协作者需要重新克隆项目,否则可能导致冲突。
  • 谨慎操作远程分支:确保操作的是正确的分支,特别是 main 或 master。

实现步骤

1.克隆你的项目

确保你本地有该仓库的副本。如果没有,请先克隆:

1
2
git clone <远程仓库地址>
cd <仓库目录>

2.创建孤立分支

创建一个孤立分支(不会保留任何提交历史):

1
git checkout --orphan temp_branch

此时,temp_branch 是一个没有历史记录的全新分支。

3.清空 Git 提交记录

(1) 删除当前分支中的所有文件,但不影响本地文件:

1
git rm -rf --cached .

(2) 将本地文件重新添加到暂存区:

1
git add .

(3) 提交新的初始提交:

1
git commit -m "Initial commit"

4.替换原始分支

将新的分支覆盖原始分支(例如 main):

1
2
git branch -M main
git push origin main --force

5.删除远程的多余分支(可选)

如果远程有其他分支不再需要,可以使用以下命令删除:

1
git push origin --delete <分支名>

最终效果

  1. 远程仓库的历史提交记录已被清空。
  2. 所有文件被保留,且只有一次新的提交。
  3. 协作者需要重新克隆仓库。
本文由作者按照 CC BY 4.0 进行授权