Git

gitで黒歴史を抹殺して「え、何かありました?」とすっとぼけるやり方

ウワーやっちまった!
あわてて、ファイルを削除して、gitignoreにも追加。
キャッシュも消したぜ!

でも、ログを見ると、いる。。。。。。。やつの足跡がはっきり刻まれている。。

うわーーーーー誰にもばれたくない!!
わたわたしていると、
会社のいつもお世話になっているかたから救いの手が。。。

git filter-branch

こ れ だ ━━━(゚∀゚)━━━!
さっそくやってみるしかない。。。

# このパスワードまみれのファイルを歴史から一刻も削除しなければ。。。
$ git filter-branch --tree-filter 'rm -f password_all.txt' HEAD

すると
refs/original/refs/<作業branch名>
にこの改竄用正しいコミットのsha1が追加されます。

よし!
調子に乗って

# このパスワードまみれのdirを歴史から一刻も削除しなければ。。。
git filter-branch --tree-filter 'rm -rf passwords/*' HEAD

この状態で続けて実行しようと

Cannot create a new backup.
A previous backup already exists in refs/original/
Force overwriting the backup with -f

もうだめよ
といわれてしまうので、なりふり構わずとりあえず、うまくいったやつだけでも!と

git push -f

pushできたのでドキドキしながらlogを確認。

$ git log -p password_all.txt
$

何もでてこない。。!よしやったぞー!

$ git log -1

でもこれで改竄記録でちゃったらだめじゃん。って思ったので、確認。
改竄行為を行う直前の他の修正のコミットがでてくる。

わーーーーーー!やりやがったー!という感じで、めでたしめでたし。

refs/original/refs/<作業branch名>
このファイル<作業branch名>を削除したら、
他の改竄作業を進めることができた。

any comments would be appreciatedです!
優しい方はお前間違ってんぞをそっと諭していただけると嬉しいです。

Happy coding! ( ˘ω˘)