【月間10万PV達成】ブログの作り方を無料公開中!

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

Gitとは?仕組みを解説

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

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

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

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

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

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

Gitとは

Gitのイメージ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Gitでバージョン管理しておけば安心だね!

Gitの仕組み(初心者向け)

Gitの仕組みについては、以下の用語を順番に覚えていくことで、簡単に理解できます。

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

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

リポジトリとは

Gitのリポジトリとは

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

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

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

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

「リポジトリ」=「.git」ってことだね!

リビジョンとは

Gitのリビジョンとは

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

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

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

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

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

リポジトリに「リビジョン」がどんどん溜まっていくんだね!

ブランチとは

Gitのブランチとは

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

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

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

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

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

リビジョンは「ブランチ」に紐づいてるんだね!

コミットとは

Gitのコミットとは

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

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

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

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

コミットをすると「リビジョン」が作られるんだね!

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

Gitのインデックスとは

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

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

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

コミットしたいファイルを「アド」したらいいんだね!

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

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

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

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

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

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

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

ワーキングディレクトリの中でしか、Gitは使えないんだね!

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

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

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

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

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

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

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

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

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

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

基本は「ローカル」を使うよ!共有したいときだけ「リモート」に繋げるんだ!

プッシュとは

Gitのプッシュとは

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

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

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

プルとは

Gitのプルとは

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

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

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

ここはちょっとややこしいので、以下の記事で詳しく紹介しますね。

Gitコマンドの使い方【初心者】Gitコマンドの使い方を体系的に覚える【一覧あり】

プルをすると、ワーキングディレクトリも更新されるよ!

Gitの流れ

Gitの流れ

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

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

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

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

  1. プル(pull)→ リモートリポジトリの「master」ブランチを、ローカルの「master」ブランチに取り込む

ここで紹介したGitの流れは、とってもシンプルなパターンです。

ファイルやリビジョンの状態によっても、実行するコマンドは変わってくると思いますが、基本的な流れはこんな感じ。

ローカルリポジトリにリビジョンを溜めていき、そのリビジョンをリモートリポジトリを使って共有するといった流れですね。

ここまで理解できれば、基本的なGitの使い方はオーケーだよ!

GitとGitHubの違い

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

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

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

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

GitHubは「リモートリポジトリ」として使うのが一般的だよ!
GitHubの使い方と用語【入門】GitHubとは?初心者向けに登録や使い方、リポジトリ作成を紹介!

まとめ:Gitは使いながら覚えよう!

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

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

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

ちなみに、この記事を読んで

「う~ん、ちょっとGitは難しそう…」

って方は、プログラミングスクールなどの利用も考えてみるといいでしょう。

わからないところで詰まっても、講師に細かく質問しながら教えてもらうことができます。

独学にこだわって挫折するよりは、全然いいと思いますよ。

【エンジニア講師が比較】プログラミングスクールのおすすめと選び方【エンジニア講師が比較】プログラミングスクールのおすすめと選び方

Gitの仕組みを理解できた方は、「Gitのインストール方法と初期設定」を読んで、実際にGitをインストールして使ってみましょう。

またね、キツネ(@kitaaaa_kitsune)でした!

【Git入門】基本操作からコマンドの使い方までの学習ステップ【Git入門】基本操作やコマンドの使い方を勉強しよう【学習】
テキストのコピーはできません。