Gitは、ファイルの変更を記録しておき、過去の状態に戻したり、複数人の変更をまとめたりできるバージョン管理ツールです。文書の編集履歴のように、保存するたびに「いつ、誰が、どこを変えたか」が残り、あとから取り消すこともできます。今のソフトウェア開発では、ほぼ標準の道具になっています。
Git と GitHub は別もの
Git と GitHub は名前が似ていますが、役割が違います。
Git は、手元のパソコンでも動く履歴管理のツールそのものです。GitHub や GitLab は、Git で管理している一式(リポジトリ)をオンラインに置き、チームで共有したり、変更を確認し合ったりするためのサービスです。ツールと、それを預ける場所の関係と考えると整理しやすいでしょう。
履歴があるとできること
ソフトウェア開発では、何十、何百というファイルを複数人が同時に書き換えます。Git があれば、それぞれの変更が記録され、別々に進めた作業を、終わったタイミングでひとつにまとめられます(マージ)。
- コードに問題が出たら、特定の変更だけを取り消したり、ある時点の状態へ丸ごと戻したりできる
- 新機能を作っている途中でも、本番のバグ修正を割り込みで進められる
- コードを送ったのをきっかけに、自動でテストを走らせられる(CI/CD)
履歴を役立てるには、使い方のルールも要ります。変更の記録(コミット)は小さくまとめ、何のための変更かが伝わるメッセージを書く。本番に入るコードは、ほかの人のレビューを通す流れにする。まとめるときに変更がぶつかったら(競合)、内容を確かめてから解消する。
履歴に残してはいけないもの
履歴が残るということは、残ってほしくないものも残るということです。パスワードや APIキー を誤ってコードに含めないよう、.gitignore という設定で管理の対象から外しておきます。
一度リモートのリポジトリへ送った記録に機密情報が含まれていたら、あとで履歴を書き換えても、完全には消えないことがあります。誤って送ってしまったときに優先するのは、履歴の掃除より、そのキーを即座に無効にすることです。
なお、Git が管理するのは、リポジトリに入れたファイルの変更履歴です。データベースの中身や、リポジトリに入れていないファイルは対象外なので、それらを守るには別にバックアップが必要です。
