GitHub清空提交记录

各位在github上维护自己编写的代码工程仓库时,想必遇到过仓库内文件泄漏隐私信息、commits泄漏邮箱信息等敏感头疼问题,但是由于这些仓库收获了很多stars,不想删除后重建新仓库。为了解决这些问题,这里有两个办法:

方法一:强制回退法

  1. 克隆仓库,但记住不可以加–depth=1这类选项;

  2. 使用 git log 命令查询要回滚的 commit_id;

  3. 查找最早一次提交到的commit_id;

  4. 备份原仓库目录下所有文件及文件夹(.git文件夹除外);

  5. 强制还原,执行命令:git reset –hard commit_id,之后 HEAD 就会指向此次的提交记录;

  6. 删除仓库目录下所有文件和文件夹,去除你备份的文件中包含隐私信息的部分,并还原至原仓库目录下;

  7. 执行提交新commit前的常规操作:git add . 和 git commit -m “init:剔除敏感信息”; ## 自己更换备注

  8. 强制推送到github远程仓库:git push origin HEAD –force;

  9. 此时只剩下第一次提交和本次提交记录,基本达到清空目的:

此方法速度比较快,但缺点很明显:第一次commit记录无法清除。

方法二:分支替换法

  1. 同方法一克隆仓库;

  2. 将当前分支指向一个空分支 latest_branch:git checkout –orphan latest_branch;

  3. 备份原仓库目录下所有文件及文件夹(.git文件夹除外),之后清空该目录(.git文件夹除外);

  4. 去除你备份的文件中包含隐私信息的部分,并还原至原仓库目录下,最后重新添加:git add -A;

  5. 提交更改:git commit -am “init:剔除敏感信息”; ## 自己更换备注

  6. 删除原分支:git branch -D master (新版的github默认分支是main了,请根据实际情况更改,下同);

  7. 将现有临时分支切换到主分支:git branch -m master;

  8. 强制推送到远程:git push -f origin master –force

感谢作者


GitHub清空提交记录
https://blog.wongcw.cn/2022/10/19/GitHub清空提交记录/
作者
wangcw
发布于
2022年10月19日
许可协议