【リニューアル記念】未経験からブロガーへのSTEPを続々更新!

【読むだけ】Gitとは?仕組みを初心者にもわかりやすく解説するよ!

Gitとは?仕組みを解説

エンジニアであれば、必ず使うことになる「Git(ギット)」。

プログラミング初心者にとって、Gitの仕組みを完璧に理解することは、少しハードルが高いかもしれません。

なぜなら、Gitは実際に手を動かしながら経験していかなければ、なかなか身につかないスキルだからです。

ただ、前提知識もなく闇雲に手を動かしているだけでは決して覚えられません。

まずはこの記事を読んで、Gitの仕組みを何となくイメージできるようになるところから始めてみましょう。

キツネ

僕が教育している未経験エンジニアも、Gitの概要から勉強しているよ!

Gitとは

Gitのイメージ

Git(ギット)とは、「分散型バージョン管理システム」とよばれるツールです。

Gitを使うことで、ソースコードに対しておこなった変更を複数人で共有し、効率よく開発を進めることができるようになります。

ちなみに、「分散型」ではないバージョン管理システムには、以下のようなものがあります。

  • Subversion(サブバージョン)
  • CVS(コンカレント・バージョンズ・システム)

しかし、これらのバージョン管理システムは古く、多くの企業はGitに乗り換えているのが現状です。

キツネ

もともとはLinuxカーネルのソースコードを管理する目的で作られたんだよ!

分散型バージョン管理システムとは

分散型バージョン管理システムとは、名前だけ見ると難しく感じるかもしれませんが、分けて考えると簡単です。

  • 「分散型バージョン管理システム」…分散されたバージョン管理システム
  • 「バージョン管理システム」…ファイルのバージョンを管理するシステム
  • 「バージョン」…ファイルの変更履歴
  • 「ファイル」…ソースコードや画像ファイルなど

つまり、ソースコードや画像ファイルの変更履歴を管理するシステムであり、このシステムは分散して(複数に分けて)利用するってことです。

バージョン管理システムの特徴

そもそも、なぜファイルのバージョン(変更履歴)を管理するのでしょうか?

バージョン管理システムには、以下のような特徴があります。

  • ファイルに対しての変更履歴を残せる
  • 変更履歴を共有できる
  • 以前のバージョンに簡単に戻せる

ファイルの変更履歴を残すことで、いつ誰がどのような変更をしたのか確認することができます。

そして、これらの履歴は他のメンバーにも共有することができます。

また、ファイルに何か問題が見つかっても、前の状態(特定のバージョン)に簡単に戻せるのでとっても便利です。

バージョン管理をしていなければ、最新ファイルしか残っていないことになるので、間違った内容で書き換えてしまうと大変ですよね。

複数人で開発するときは、このような履歴(ログ)を残すやり方が主流になっているのです。

Gitの仕組み

Gitの仕組みは、以下の用語を順番に覚えることで理解しやすくなります。

  1. リポジトリ
  2. リビジョン
  3. ブランチ
  4. コミット
  5. インデックス(ステージングエリア)
  6. ワーキングディレクトリ
  7. ローカルリポジトリとリモートリポジトリ
  8. プッシュ
  9. プル

キツネ

ここからは、1つずつ詳しく見ていこう!

リポジトリとは

Gitのリポジトリとは

まず、Gitには「リポジトリ」というものが存在します。

リポジトリとは、ファイルの変更履歴をためておく「貯蔵庫」のようなもので、いくつでも作ることができます。

このリポジトリの正体は、「.git」という名前のただのディレクトリです。

「.git」ディレクトリの中にリポジトリの情報がすべて詰まっています。

リビジョンとは

Gitのリビジョンとは

リポジトリにためていく変更履歴のことを「リビジョン」といいます。「コミットログ」ともいいますね。

リビジョンとは、以下の情報をまとめて持っているものです。

  • リビジョン番号
  • コミットしたユーザー名とメールアドレス
  • コミットした日時
  • コミットメッセージ
  • 対象ファイルの変更情報

リビジョンは、これらの情報をログ(履歴)としてリポジトリに残していきます。

コミットについては、あとで詳しく説明します。

ブランチとは

Gitのブランチとは

実は、リポジトリの中に直接リビジョンをためこんでいるわけではありません。

リビジョンは、リポジトリが持っている「ブランチ」に紐づけて管理されています。

リポジトリを作ったばかりの状態だと、「master」ブランチがデフォルトで指定されているはずです。

もちろん、ブランチ名を変えたり、新しいブランチを自由に追加することができます。

この「ブランチ」を切り替えることで、リビジョンも一緒に切り替わる仕組みになっています。

コミットとは

Gitのコミットとは

リポジトリにリビジョンを作成するためには、「コミット(commit)」をする必要があります。

コミットとは、ファイルの追加や修正、削除などの情報を「コミットメッセージ」とともにリポジトリに送ることです。

コミットメッセージは、ファイルの変更点などをメモとして残すために記述します。ちなみに必須です。

メッセージは他の人も読む可能性があるので、わかりやすく簡潔に記述するようにします。

インデックス(ステージングエリア)とは

Gitのインデックスとは

インデックスとは、コミット(commit)の対象となるファイルを置いておく場所です。「ステージングエリア」ともよばれます。

このインデックスに登録するには「アド(add)」を実行します。

つまり、インデックスに「アド(add)」されたファイルしか「コミット(commit)」はできないということです。

ワーキングディレクトリとは

Gitのワーキングディレクトリとは

ワーキングディレクトリとは、リポジトリ(.git)が存在するディレクトリのことです。「ワーキングツリー」や「作業ディレクトリ」などともよばれます。

ワーキングディレクトリは、「.git」があること以外は普段利用しているディレクトリと見た目はほとんど変わりません。

「.git」のあるディレクトリ以下が、「ワーキングディレクトリ」として扱われることが大きな特徴です。

ワーキングディレクトリにあるディレクトリやファイルは、インデックスにアド(add)したり、リポジトリにコミット(commit)したりできるようになります。

また、リポジトリで管理されている情報とワーキングディレクトリの情報は常に比較されるようになり、ディレクトリやファイルごとの差分を確認することができます。

ローカルリポジトリとリモートリポジトリ

ローカルリポジトリとリモートリポジトリ

リポジトリには、2つの種類があります。

  • 「ローカルリポジトリ」…ローカル環境にあるリポジトリ
  • 「リモートリポジトリ」…リモート環境にあるリポジトリ

どちらも同じリポジトリなのですが、大きく違う点があります。

それは、リポジトリが「存在する目的」と「存在する場所」です。

ローカルリポジトリは、自分のパソコンなどでバージョン管理するため、ローカル環境にリポジトリが存在します。

リモートリポジトリは、複数人が持つローカルリポジトリの内容を共有できるよう、リモート環境にリポジトリが存在します。

リポジトリを複数持ち、共有する仕組みこそ、Gitが「分散型」とよばれる由来です。

この仕組みにより、ネットワークに繋がっていないときでも、ローカルリポジトリを使ってバージョン管理できる点が大きいです。

プッシュとは

Gitのプッシュとは

ローカルリポジトリの情報をリモートリポジトリに反映させたいときは、「プッシュ(push)」をします。

ワーキングディレクトリで指定しているブランチ情報を、そのままリモートリポジトリの指定ブランチに反映させることができます。

キツネ

ポイントはブランチ単位で反映ってことだね!

プルとは

Gitのプルとは

リモートリポジトリの情報をローカルリポジトリに取り込みたいときは、「プル(pull)」をします。

実はこの「プル(pull)」がくせ者で、「フェッチ(fetch)」と「マージ(merge)」という2つの処理を内部でおこなっています。

  • 「フェッチ(fetch)」…リモートリポジトリの情報を、ローカルリポジトリに取り込む
  • 「マージ(merge)」…取り込んだリモートリポジトリのブランチ情報を、ローカルのブランチに反映させる

ここはちょっとややこしいので、「【初心者】Gitコマンドの使い方を体系的に覚えよう!【一覧あり】」で詳しく紹介しますね。

Gitの流れ

Gitの流れ

ここまでの内容を振り返って、実際にどのようにGitを利用するのか流れを確認します。

まず、キツネが以下のように作業します。

  1. ワーキングディレクトリでファイルを編集
  2. 編集したファイルをアド(add)する
  3. コミット(commit)…ローカルリポジトリの「master」ブランチにリビジョンが追加
  4. プッシュ(push)…リモートリポジトリの「master」ブランチにリビジョンが追加

次に、タヌキが以下のような作業をします。

  1. ワーキングディレクトリでプル(pull)…リモートリポジトリの「master」ブランチをローカルの「master」ブランチに取り込む

上のGitの流れは、とってもシンプルなパターンです。ファイルやリビジョンの状態によって、実行するコマンドは変わってきます。

ですが、だいたいの流れは、ローカルリポジトリにリビジョンをためていき、そのリビジョンをリモートリポジトリを使って共有するという流れになります。

GitとGitHubの違い

「Git」を調べていると、「GitHub(ギットハブ)」というワードを見かけることがあるかもしれません。

GitHubとは、Gitのホスティングサービス(Git機能を提供するサービス)で、GitHubをリモートリポジトリとして使うことで、複数の方と簡単にファイル共有ができるようになっています。

GitHubの中でもGitが動いていますが、Gitをブラウザから操作できる点が大きく違います。

同じようなGitホスティングサービスに、「GitLab(ギットラボ)」や「Bitbucket(ビットバケット)」などがあります。

まとめ

Gitの仕組みについて、なんとなくはイメージできましたか?

Gitは覚えることが非常に多く、状況によって利用するコマンドも違うため、読むだけで完全に理解することは難しいです。

自分で実際に使って慣れていくことで、少しずつ理解できるようなると思うので、あきらめずに頑張りましょう!

次は、「【超簡単】Gitのインストール方法と初期設定(Windows、Linux)」を読んで、Gitをインストールしてみましょう。

テキストのコピーはできません。