Github技巧 – 删除敏感文件、批量修改提交

最近终于是快忙完面向对象课设,前前后后写了2w+行,也勉强算个完整项目了。不过由于项目原先部署在私有Gogs,后来又移到Github私有仓库,导致我没有在意配置文件。最近打算整理整理开源的时候发现,近100 commits里全是我那配置文件。其实以前我也干过这事,当时是biliapi-python的开源,在测试用例中包含了账号信息。当时一顿骚操作,然后成功的把所有commit弄没了。

这次学乖了,跑去看了眼文档,发现一个非常好用的指令git filter-branch。比如删除passwords.txt文件,可以运行:

$ git filter-branch --tree-filter 'rm -f passwords.txt' HEAD
Rewrite 6b9b3cf04e7c5686a9cb838c3f36a8cb6a0fc2bd (21/21)
Ref 'refs/heads/master' was rewritten

而且,由于指令是运行指定的shell,因此批量变更内容的复杂操作也是可以进行的。于是操作就很简单了。首先单独clone下repo,之后cd进来git filter-branch。之后检查git log会发现hash和日期都变了,虽然hash没办法,不过日期的问题不用担心,push后是正确的。检查没有问题后,用git push --force强制push。之后在开发环境fetch之后hard resetgit reset --hard origin/master之类)即可。

Reference

Git – 重写历史(https://git-scm.com/book/zh/v1/Git-%E5%B7%A5%E5%85%B7-%E9%87%8D%E5%86%99%E5%8E%86%E5%8F%B2

分享到

KAAAsS

喜欢二次元的程序员,喜欢发发教程,或者偶尔开坑。(←然而并不打算填)

相关日志

  1. 没有图片
  2. 没有图片

    2019.02.05

    新年快乐!
  3. 没有图片

    2016.04.11

    搭建Gogs成功
  4. 没有图片
  5. 没有图片

    2021.02.12

    写在2021的开头

评论

还没有评论。

在此评论中不能使用 HTML 标签。