最近、TwitterやらLINEやらのBOTづくりにはまっていて、そのソースコードをGitHubに上げている。GitHubは細かくバージョン管理が出来るから確かに便利。一応は完成したけど、もうちょっと手を加えたい、なんて時にごちゃごちゃ弄ってたら、元から動いていた機能まで動かなくなってしまった、あの時のファイルに一度戻したい、なんて時に、Commit情報をさかのぼれば、簡単に過去のファイルの状態が確認出来る。
だけれども、私みたいに個人でやってると過去のCommit一切いらないから消したい、ということがある。というより過去のCommitを消さなければセキュリティ上非常によろしくない、という事案があって・・・具体的にはTwitterAPIに接続するためのパスワード類が記載されたファイルを一度アップロードしておいて、後からそれらの情報だけ他の当たり障りのない文字列に置き換える、なんていう面倒なことをやっていたのだが、よく考えたら更新したところで過去のCommitを見れば、パスワード類が記載されたファイルを簡単に閲覧できるので、これは緊急になんとかしなくては・・・となったのだが、過去のCommitを消すのが案外面倒で。
色々探して結局一番分かりやすかったのはこのサイトだった。
GitHubにpushしたcommit記録の削除方法 – pandazx's blog
上記のサイトで一点だけ補足。一番最初のCommitだけ下記のコマンドでないと消せないみたい。
git rebase -i --root
以後、センシティブな情報は直接コードに書かず、別ファイルにまとめてそれを呼び出す様にしたのだが、その別ファイルをGitHubにアップロードしては全く意味がない。その時に使うのが、「.gitignore」というファイル。このファイルを作成して、このファイルの中に、GitHubにアップロードしたくないファイルやフォルダを書いておくと、リモートにそれらのファイルなどは反映されない。もっともひとつだけ罠があって、既に公開してしまったり、色々Commitを弄っているリポジトリは、「.gitignore」にファイル名を書いてもリモートにアップロードされてしまうことがあり、その場合はリモートリポジトリのキャッシュを消しておかなければならない。
と言うわけで、GitHubはとても便利なんだけど、これはこれで機能についてかなり勉強しなければならない。勉強は出来れば、プログラミング言語やライブラリ、TwitterやLINEの仕様ぐらいに抑えておきたいが(これでもいっぱいいっぱいだが(笑))、Gitもそうだし、結局Linuxのコマンドなんかもある程度勉強しないと、結局何にも出来ない。まあ、面白いもの作りたいからやるけども、本当の40の手習いだから結構ついていくのが大変なのである・・・。