gitで過去のコミットを書き換える
移転しました。
自動的にリダイレクトします。
git
の最初のcommit
にパスワードを書き込んでpush
したとします。さらに、しばらくcommit/push
を繰り返したとします。
下記の手順でパスワードを全てマスクした文字に書き換える事ができますが、clone
して作業している人すべてに影響がでるので作業前には関係者への連絡と準備が必須です。
事前確認
ブランチがクリーンなことを確認します。
$ git status ブランチ master nothing to commit, working tree clean $
下記のようにpassword
が含まれているファイルをを確認します。
$ git grep password file.txt:password $
書き換え
filter-branch
の--tree-filter
オプションで各コミットに実行するコマンドを指定します。
確認したfile.txt
をsed
で書き換えます。
$ git filter-branch -f --tree-filter "sed -i -e 's/password/mask/' file.txt" HEAD Rewrite c5974de297ec5360d0dfce499abccc3073ba0211 (2/2) (0 seconds passed, remaining 0 predicted) Ref 'refs/heads/master' was rewritten $
確認
下記の通りpassword
は、消えて…
$ git grep password $
mask
になっています。
$ git grep mask file.txt:mask $
以上