git修改某个commit中的错误

2018-05-29  本文已影响12人  柳正来

我一时疏忽将一些敏感的配置信息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信息.

参考

How to modify a specified commit in git?

上一篇下一篇

猜你喜欢

热点阅读