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

最近终于是快忙完面向对象课设,前前后后写了2w+行,也勉强算个完整项目了。不过由于项目原先部署在私有Gogs,后来又移到Github私有仓库,导致我没有在意配置文件。最近打算整理整理开源的时候发现,近100commits里全是我那配置文件。其实以前我也干过这事,当时是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 reset(git 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

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章