美文网首页
git修改某个commit中的错误

git修改某个commit中的错误

作者: 柳正来 | 来源:发表于2018-05-29 16:22 被阅读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?

    相关文章

      网友评论

          本文标题:git修改某个commit中的错误

          本文链接:https://www.haomeiwen.com/subject/lijajftx.html