Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Macでgitの歴史からパスワードを削除するコマンド

More than 5 years have passed since last update.

Macでのコマンド例です

パスワードを直書きしたファイルをgitで管理してしまっていて、そのパスワードをgitの歴史から抹消したいときに使用できます。
歴史上のすべてのpasswordが空文字に置き換わります。
下記コマンド例の *.h とか password とかは適宜書き換えてください。

git filter-branch --tree-filter "find . -name '*.h' -exec sed -i '' -e 's/password//g' {} \;" -- --all
  • 上記例は password 文字列を置き換えるというものです。置き換えようとしているパスワードの文字列がパスワード以外の部分で使用されていればそれも置き換わることになるので注意してください
  • sed の -i オプションの挙動がLinuxとMacで異なる みたいなのでMac以外で上記コマンドは使用しないでください (cf. http://qiita.com/catfist/items/1156ae0c7875f61417ee)
  • 歴史上から該当パスワードを抹消するためには、上記コマンド実行後にリモートリポジトリに force push する必要があります
  • リポジトリに force push するときは細心の注意を払ってください
    • コマンド実行後に変な部分が書き換わってないか確認
    • force push するときに他のチームメンバーが作業中ではないか確認
    • できれば以前のリポジトリをバックアップ用に保存しておく
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away