Git

Gitは、ファイルの変更履歴を記録し、複数人で同じコードを安全に編集できるようにするバージョン管理ツールです。

Git のアイキャッチ図解
まずは、こう考えるとつかみやすいです。

Gitは、文書の変更履歴を細かく残す「編集履歴つきのフォルダ」に似ています。誰がいつ何を変えたか追えて、古い状態にも戻せます。

ひとことで言うと

Gitは、ファイルの変更をスナップショットとして記録し、いつでも過去の状態に戻したり、複数人の変更をまとめたりできるバージョン管理ツールです。

コードの変更を「誰が・いつ・何のために変えたか」とともに残せるため、ミスをしたときに戻せるだけでなく、チームで同じファイルを並行して編集することも可能になります。 現代のソフトウェア開発では、Gitを使うことがほぼ標準となっています。

たとえ話でもう少し詳しく

Gitは、文書に細かく「編集履歴」を残す仕組みに近いです。

  • 文書を保存するたびに「いつ・誰が・どこを変えたか」が記録される
  • 変更を取り消したいときは、過去のスナップショットに戻せる
  • 複数人が同じ文書を別々に編集しても、あとから変更をひとつにまとめられる

ソフトウェア開発では、何十・何百というファイルを複数人が同時に変えます。 Gitがあれば、それぞれの変更が記録され、別々の作業が終わったタイミングでひとつに統合できます。 問題が起きたときは特定の変更だけを取り消したり、あの時点の状態に丸ごと戻したりすることも可能です。

よく出る場面・使いどころ

  • コードに問題が出たとき、変更前の状態に戻したいとき
  • 複数人が並行して機能を開発し、後でまとめたいとき
  • 新機能の開発中に本番のバグ修正を割り込みで対応したいとき
  • CI/CDと組み合わせて、コードを送ったら自動でテストを走らせたいとき

似た言葉との違い

  • GitHub / GitLab
    • Gitのリポジトリをオンラインで管理・共有するためのサービス
    • GitはツールそのもGitHub/GitLabはそれをホストするプラットフォーム
  • CI/CD
    • コードの変更を自動でテスト・デプロイする仕組み
    • CI/CDはGitへのコード送信をきっかけに動き出すことが多い
  • バックアップ
    • データを丸ごと別の場所に保存する仕組み
    • Gitは変更の履歴を管理するもので、ファイルそのものの保全が目的のバックアップとは役割が異なる

実務で気にするポイント

  • コミット(変更の記録)は小さくまとめ、目的が伝わるメッセージを書く
  • 本番へのコードはレビューを通す流れを作る
  • パスワードやAPIキーを誤ってコードに含めないよう、.gitignore で除外する
  • 変更をまとめるとき(マージ)に競合が起きたら、内容を確認してから解消する

注意: Gitの履歴は変更を追えますが、削除したデータそのものは復元できません。また、一度リモートリポジトリへ送ったコミットに機密情報が含まれていた場合、履歴を書き換えても完全に消えない場合があります。パスワードやキーを誤って送ってしまったときは、そのキーを即座に無効化することが優先です。