【Git入門】バージョン管理の仕組みをわかりやすく解説!

ソースコードやドキュメントの変更を管理する際、「前の状態に戻したい」「どの部分を誰が編集したのか確認したい」と思ったことはありませんか?

そのような場面で役立つのが、Gitという「バージョン管理システム (VCS: Version Control System)」です。Gitはファイルの変更履歴を保存し、異なるバージョンを管理するツールで、世界中の開発者が利用しています。

この記事では『Git』について、以下の内容を分かりやすく解説します。

  • Gitとは
  • Gitの仕組み
    • Gitで管理しているファイルがリモートリポジトリにアップロードされるまでの流れ

Gitとは

Gitとは

Gitは「バージョン管理システム 」であり、ファイルの変更履歴を保存し、異なるバージョンを管理できるツールです。

ソースコードや会議の議事録を編集する際、何度も修正が加えられますが、Gitを使えば、各修正の状態を「バージョン」として保存し、必要な時に過去のバージョンに戻ったり、変更内容を確認したりすることができます。

例えば、ソースコードを編集している際に「間違った編集をしても元に戻したい」「以前の編集内容を確認したい」と思うことがあるかもしれません。Gitを使えば、同じファイルで複数のバージョンを簡単に管理できるため、いつでも以前のバージョンに戻ることができます。

Gitの仕組み

Gitの仕組み

Gitは、ファイルをリモートリポジトリと呼ばれる場所に保管し、チームメンバーや全世界のユーザーがその内容にアクセスできるシステムです。ローカル環境(自分のPC)でファイルを編集し、それをリモートリポジトリにアップロードすることで、他のメンバーと変更内容を共有できます。また、リモートリポジトリにあるファイルをローカル環境(自分のPC)にコピーすることもできます。

上図に示しているGitの概念を理解すれば、ある程度Gitを使いこなすことができると思います。まず、Gitの仕組みを理解する上で必要な用語について説明します。

  • リモートリポジトリ
    • リポジトリとは、ファイルやディレクトリ類の変更履歴を管理する場所です。
    • その中でも、インターネット上で管理するリポジトリをリモートリポジトリといいます。
    • インターネットに保管しているリポジトリなので、全世界のユーザーがアクセス可能で、チームメンバー同士の協力が容易になります。
  • ローカルリポジトリ
    • ローカル環境(自分のPC)で管理するリポジトリをローカルリポジトリといいます。
    • ローカルで作業した内容をリモートリポジトリにアップロードすることで、チーム全体に変更内容を反映させることができます。
  • インデックス
    • インデックスは、ワークツリー(作業ディレクトリ)とリモートリポジトリの間に位置するエリアです。
    • ローカルリポジトリにコミットする内容を一時的に保存します。
    • インデックスには「ステージングエリア」という別名があります。
  • ワークツリー
    • ワークツリーは、実際にソースコードやファイルを作成・編集している作業ディレクトリを指します。
    • ワークツリーでの編集内容は、その後インデックスを経てローカルリポジトリにコミットされ、リモートリポジトリにプッシュされます。
    • ワークツリーは「ワーキングツリー」、「ワークディレクトリ」、「作業ディレクトリ」とも呼ばれています。

Gitで管理しているファイルがリモートリポジトリにアップロードされるまでの流れを以下に示します。

  • ワークツリー
    • ファイルを変更するとワークツリーに変更履歴が反映されます。
  • インデックス
    • git addを実行すると、ワークツリーからインデックスに変更履歴が反映されます。
  • ローカルリポジトリ
    • git commitを行うと、インデックスからローカルリポジトリに変更履歴が反映されます。
  • リモートリポジトリ
    • git pushを使って、ローカルリポジトリからリモートリポジトリに変更履歴が反映されます。

git fetchリモートリポジトリの変更をローカルリポジトリに反映するコマンドです。

git mergeローカルリポジトリの変更をワークツリーに反映するコマンドです。例えば、git fetch で取得したリモートリポジトリの変更を、現在のブランチにマージすることで、ワークツリーにも変更を反映します。

git pullはこれらを組み合わせたコマンドで、リモートリポジトリの変更をワークツリーに反映するコマンドです。すなわち、git pullgit fetchgit mergeが合わさったものです。

本記事のまとめ

この記事では『Git』について、以下の内容を説明しました。

  • Gitとは
  • Gitの仕組み
    • Gitで管理しているファイルがリモートリポジトリにアップロードされるまでの流れ

お読みいただきありがとうございました。