バージョン管理・Gitとは
要点
- バージョン管理とは、誰が・いつ・何を変更したかを記録し、必要ならいつでも過去の状態に戻せる仕組みのことです。
- Gitはその代表的なツールで、変更を「コミット」という単位で記録し、履歴として積み重ねていきます。
- GitHubなどのサービスと組み合わせることで、複数人での並行開発やコードレビューがしやすくなります。
積み重なる
戻れる
ぽち先生も、毎日こんな風にチームで作業しています
バージョン管理がないとどうなるか
バージョン管理を使わない現場では、ファイルをコピーしながら「report_final.docx」「report_final2.docx」「report_final2_修正版.docx」のような名前で管理しがちです。どれが最新か分からなくなり、複数人が同時に編集すると、後から保存した人の内容で上書きされてしまうこともあります。
ぽち先生のヒント1冊のノートを複数人で回し書きしているのに、誰かが前のページを消しゴムで消して書き直してしまうイメージだよ。誰が何を書いたのか、元は何だったのかが分からなくなってしまうんだ。
バージョン管理とは
バージョン管理とは、ファイルの変更履歴を自動的に記録し、「いつ・誰が・何を・なぜ変更したか」を追跡できるようにする仕組みです。履歴が残っているので、問題が起きたときは原因の変更を特定したり、過去の状態に戻したりできます。
Word や Excel の「変更履歴の記録」機能に近いものですが、それを1つのファイルだけでなく、プロジェクト全体・チーム全体に広げたものだとイメージすると分かりやすいでしょう。
ぽち先生のヒントゲームの「セーブポイント」に似ているよ。こまめにセーブ(記録)しておけば、途中で失敗しても、その手前のセーブポイントからやり直せるんだ。
Gitとは
Gitは、現在もっとも広く使われているバージョン管理システムです。大きな特徴は「分散型」であること。中央のサーバーだけでなく、開発に参加する各メンバーの手元のPCにも、履歴のすべてがコピーされます。
そのため、ネットワークにつながっていない状態でも作業や履歴の確認ができ、後から手元の変更をチームの共有場所に反映する、という進め方ができます。
リポジトリとコミット
Gitでは、履歴を保存する入れ物を「リポジトリ」、1回分の変更の記録を「コミット」と呼びます。コミットはファイルの「その時点でのスナップショット(写真)」のようなもので、コミットを重ねるごとに履歴が積み上がっていきます。
初期作成
機能追加
不具合修正(最新)
ぽち先生のヒント旅行の思い出をアルバムに残すとき、節目ごとに写真を撮っていくイメージだよ。あとから写真(コミット)を見返せば、いつ・どこで・何があったかを振り返れるんだ。
作業ディレクトリ・ステージ・リポジトリ
Gitでの変更は、いきなり履歴に記録されるわけではありません。「作業ディレクトリ(編集中の場所)」→「ステージ(次にコミットする内容を選ぶ場所)」→「リポジトリ(履歴として確定する場所)」という3段階を経て記録されます。
ディレクトリ
(履歴)
この仕組みのおかげで、編集した内容のうち「この部分だけ記録する」という選び方ができます。詳しくは「Gitの基本操作」で解説します。
ブランチという考え方
ブランチとは、本流(履歴の main)から枝分かれさせて、他の作業に影響を与えずに変更を進められる仕組みです。作業が終わったら、ブランチを本流に「マージ(合流)」して1つの履歴に統合します。
(本流)
ブランチ
(統合後)
ぽち先生のヒント小説やゲームの「もしこの選択肢を選んだら」という分岐ルートに似ているよ。本編とは別のルートを試してみて、良い結果になったら本編に取り込む(合流させる)、というイメージなんだ。詳しくは「ブランチ運用」で解説するね。
GitHubでの共同開発
GitHubは、Gitのリポジトリをインターネット上で共有できるサービスです。チームの共有リポジトリに向けて、各メンバーが自分の変更を「プルリクエスト」として提案し、他のメンバーがレビューしてから本流に取り込む、という流れが一般的です。
プルリクエスト
詳しくは「GitHubでの共同開発」で解説します。
まとめ
バージョン管理・Gitは、変更履歴を記録し、チームで安全に開発を進めるための土台となる知識です。コミットで履歴を積み上げ、ブランチで作業を分岐させ、GitHubのようなサービスでチーム全体に共有する、という流れを押さえておきましょう。
それぞれの内容は、以下の個別トピックでさらに詳しく学べます。
関連トピック: