分散型バージョン管理システム Git の構造と仕組み

Joint Development

Gitとはソースコードやドキュメントなどの変更履歴を記録、管理することが可能な分散型のバージョン管理システムである。
本ナレッジではその構造と仕組みについて記載する。

Sponsored Links

Gitの構造と仕組み

Gitの構造と仕組みとして、Git内で利用されるディレクトリやリポジトリについて記載する。
各ディレクトリとリポジトリおよびそれらの関係性および連携するコマンドの概要は以下となる。

Git Structure

上記を前提に各ディレクトリおよびリポジトリについて、詳細に記載する。

  • Local Environment
    • ローカル環境。
    • Gitは分散型のバージョン管理システムであるため、ソースを自身のローカル環境にコピーして同時開発が可能である。
    • ローカル環境は自身のPCやローカルサーバなどを利用する。
  • Shared Env.
    • 共有環境。
    • リモートリポジトリを設置した共有環境。
    • 共有環境は自身で公開サーバを作成しても良いが、GitHubやGitLab、GCPのCloud Source Repositoriesなどクラウドのサービスを利用すると管理が容易。
  • Repository
    • リポジトリ。
    • ファイルやディレクトリの状態を記録する場所。状態は更新履歴として保持される。任意のディレクトリ配下を管理対象にすることが可能。
    • 実態としては、ワークツリー直下の”.git”ディレクトリとなる。”.git”ディレクトリを別のディレクトリにコピーするだけで、新しいリポジトリを作成することが可能。
  • Local Repository
    • ローカルリポジトリ。
    • ローカルに配置したリポジトリ。
    • 自身のPCやローカルサーバなどに配置することが多い。
  • Remote Repository
    • リモートリポジトリ。
    • 外部からアクセス可能な複数人で共有するリポジトリ。
    • 自身でリモートリポジトリの開発・設置も可能だが、GitHubやGitLab、GCPのCloud Source Repositoriesなどクラウドのサービスを利用すると管理が容易。
  • Worktree
    • ワークツリー、ワーキングディレクトリ、作業ディレクトリ。
    • Gitにて状態や更新履歴を管理対象とするディレクトリ。このディレクトリ配下の更新内容が管理対象となる。
    • 特に指定せず”git clone”にてワークツリーを作成すると、ワークツリー名はリモートリポジトリ名と同じ名前となる。
  • Index
    • インデックス。
    • ワークツリー内で実施した更新情報をローカルリポジトリにコミットする前に確認、管理できる領域。
  • Branch
    • ブランチ。
    • 管理しているソース全体を分岐させて、別のバージョンとして管理可能とする。異なるブランチ間で独立するため、一方のブランチでファイルを更新したとしても、異なるブランチには影響がない。
    • デフォルトでmasterブランチが作成される。例えば、masterブランチから分岐させてdevelopブランチを作成し、developブランチで開発し、リリース時にmasterブランチにマージして、コミットするといった使い方をする。
    • HEADとは、使用中のブランチの先頭を表している。デフォルトではmasterの先頭を表している。HEADを移動させることでブランチを変更。
    • ブランチの切り替えは”git checkout”にて実施。
  • Local Branch
    • ローカルブランチ。
    • ローカルリポジトリ内のブランチ。デフォルトで”master”ブランチが作成される。
  • Remote-tracking Branch
    • リモート追跡ブランチ。
    • ローカルリポジトリ内にある、リモートブランチの状態をコピーしたローカル上のブランチ。
    • ブランチ名は”リポジトリ名/リモートブランチ名”で表される。例として”origin/master”は、”origin”で表されるデフォルトのリポジトリの”master”ブランチをコピーしたローカルリポジトリ内のブランチ。
  • Remote Branch
    • リモートブランチ。
    • リモートリポジトリ内のブランチ。

ワークツリーや各リポジトリ間の連携方法およびコマンドについては、下記ナレッジにて記載する。

Sponsored Links