ひとことで言うと
Gitは、ファイルの変更をスナップショットとして記録し、いつでも過去の状態に戻したり、複数人の変更をまとめたりできるバージョン管理ツールです。
コードの変更を「誰が・いつ・何のために変えたか」とともに残せるため、ミスをしたときに戻せるだけでなく、チームで同じファイルを並行して編集することも可能になります。 現代のソフトウェア開発では、Gitを使うことがほぼ標準となっています。
たとえ話でもう少し詳しく
Gitは、文書に細かく「編集履歴」を残す仕組みに近いです。
- 文書を保存するたびに「いつ・誰が・どこを変えたか」が記録される
- 変更を取り消したいときは、過去のスナップショットに戻せる
- 複数人が同じ文書を別々に編集しても、あとから変更をひとつにまとめられる
ソフトウェア開発では、何十・何百というファイルを複数人が同時に変えます。 Gitがあれば、それぞれの変更が記録され、別々の作業が終わったタイミングでひとつに統合できます。 問題が起きたときは特定の変更だけを取り消したり、あの時点の状態に丸ごと戻したりすることも可能です。
よく出る場面・使いどころ
- コードに問題が出たとき、変更前の状態に戻したいとき
- 複数人が並行して機能を開発し、後でまとめたいとき
- 新機能の開発中に本番のバグ修正を割り込みで対応したいとき
- CI/CDと組み合わせて、コードを送ったら自動でテストを走らせたいとき
似た言葉との違い
- GitHub / GitLab
- Gitのリポジトリをオンラインで管理・共有するためのサービス
- GitはツールそのもGitHub/GitLabはそれをホストするプラットフォーム
- CI/CD
- コードの変更を自動でテスト・デプロイする仕組み
- CI/CDはGitへのコード送信をきっかけに動き出すことが多い
- バックアップ
- データを丸ごと別の場所に保存する仕組み
- Gitは変更の履歴を管理するもので、ファイルそのものの保全が目的のバックアップとは役割が異なる
実務で気にするポイント
- コミット(変更の記録)は小さくまとめ、目的が伝わるメッセージを書く
- 本番へのコードはレビューを通す流れを作る
- パスワードやAPIキーを誤ってコードに含めないよう、
.gitignoreで除外する - 変更をまとめるとき(マージ)に競合が起きたら、内容を確認してから解消する
注意: Gitの履歴は変更を追えますが、削除したデータそのものは復元できません。また、一度リモートリポジトリへ送ったコミットに機密情報が含まれていた場合、履歴を書き換えても完全に消えない場合があります。パスワードやキーを誤って送ってしまったときは、そのキーを即座に無効化することが優先です。