前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Github删除某个文件的所有提交记录

Github删除某个文件的所有提交记录

作者头像
Java那些事儿
发布2020-07-21 14:49:22
9.1K1
发布2020-07-21 14:49:22
举报
文章被收录于专栏:Java那些事儿Java那些事儿

在使用GitHub的过程中,假如某次提交代码时不小心将敏感信息提交进了公共仓库。 如果发现得及时,本地提交后还没有推送到GitHub远程仓库的话,这种情况还好处理,直接修改代码后通过git commit --amend即可。 但如果发现时已经推送到了GitHub远程仓库,或者已过了许久,后续有了很多新的commits,这种情况就会比较复杂了。

处理方式:git filter-branch

1、删除本地记录

git filter-branch --force --index-filter "git rm --cached --ignore-unmatch 你要删除的文件(相对项目的路径)" --prune-empty --tag-name-filter cat -- --all

2、本地记录覆盖到Github,(所有branch以及所有tags)

git push origin --force --all
git push origin --force --tags

3、确保没有什么问题之后,强制解除对本地存储库中的所有对象的引用和垃圾收集

git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin
git reflog expire --expire=now --all
git gc --prune=now

注:执行第一步时报错:

Cannot rewrite branches: You have unstaged changes.

解决方案:

git status

出现以下提示信息

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   xxx

no changes added to commit (use "git add" and/or "git commit -a")
git checkout -- <file>
或
git add <file>

解决!!! 切记,项目开源时请记得脱敏!!!

Q.E.D.

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、删除本地记录
  • 2、本地记录覆盖到Github,(所有branch以及所有tags)
  • 3、确保没有什么问题之后,强制解除对本地存储库中的所有对象的引用和垃圾收集
  • 注:执行第一步时报错:
    • 解决方案:
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档