我一时疏忽将一些敏感的配置信息commit进git了, 过了几个commit才发现这个问题. 现在我想吃"后悔药", 将这些敏感信息从git历史中抹除, 应该如何操作?
我现在sourcetree里面定位了一下我有问题的commit的hash为bbc643cd. 使用下面命令进行rebase
$ git rebase --interactive 'bbc643cd^'
注意: 此命令我在CMD里面运行的时候会有问题, 在git bash中没问题.
git bash会在vim编辑器中显示一些rebase的信息, 我将bbc643cd
对应的那一行的pick
改成edit
后保存 (:wq
).
然后在本地文件上删除掉那些敏感信息, 运行如下命令提交修改:
$ git commit --all --amend --no-edit
其中--all
表示是所有文件, --amend
表示修改commit, --no-edit
表示不修改commit message, 沿用原来的.
最后
$ git rebase --continue
完成rebase.
注意: 这样修改会修改该commit及其所有后续commit的SHA-1. 也就是说, 你重写了本地的历史, 而此时remote上还是修改之前的. 如果想push, 可以用git push --force
.
secret信息应该放到哪里?
参考我的这篇文章"[node] 确保app secret信息安全"来保存secret信息.
网友评论