【初心者OK!】Gitについてやさしく解説します

gitとは イメージ画像

「あっ、前の状態に戻したい!」

コーディングをしていて、そんな風に思ったことはないでしょうか。

Gitを使えばそんな問題が解決できます。

Gitを使えば、例えば以下の様なことが可能です。

  • 各ファイルの変更を管理する
  • 大幅な変更を加える際に、今の内容を別バージョンとして取っておく
  • チームで最新のデータがどれかを共有しながら作業できる(しかも自動で)

Gitを活用することで、WEB開発を効率化することができます。

目次

GitはWEB開発に必須のスキルです

エンジニア求人には、「Git使用経験があること」という要件が含まれていることが多いです。

要件に含まれていなくても、WEB開発の現場であればGitを使用しているケースが多いです。

つまり、Gitを使えることはエンジニアになるために必要なスキルです。

使い方をマスターして、エンジニアの仕事に一歩近づきましょう。


Gitの概要について、すでに理解しているよ! という人には次の記事がおすすめです。


Gitとは

Git ロゴ
Git公式ロゴ

そもそも、Gitとは何でしょうか?

Gitは分散型バージョン管理システムと呼ばれる仕組みで、ファイルのバージョン管理を効率的に行うためのツールです。

Git公式サイト

Gitは分散型バージョン管理システムと呼ばれる仕組み

Gitの特徴

About – Gitを参考に、Gitの特徴をまとめました。

(1) ブランチモデル

Gitでは、ブランチという仕組みで履歴を枝分かれさせて、それぞれ独立して管理が可能です。

枝分かれした履歴はマージによって統合可能です。

ブランチモデルによって、Gitでは次の3つのことが可能です。

  1. 実験的な開発ができる。
  2. 環境によってブランチを分けられる。
  3. 開発する機能ごとにブランチを分けられる。

実験的な開発ができる。

アイディアを試す実験として、ブランチを分けることができます。

実験がうまく行けば、マージでもとのブランチに実験の結果を取り込めます。

うまくいかなくても、簡単に元の状態に戻せます。

環境によってブランチを分けられる。

本番環境用・テスト用・作業用でブランチを分けられます。

こうすることで、常に本番環境用とテスト用で分けて開発を進められます。

開発する機能ごとにブランチを分けられる。

機能ごとにブランチを分けて開発できます。

開発が終わった機能からマージで取り込みを行います。

機能の開発が完了して不要になったブランチは削除することもできます。

(2) 高速な処理

Gitでは、ほぼすべての操作をローカルで行います。

そのため、処理速度が高速です。

(3) 分散型

Gitはそれぞれの利用者のローカル環境にファイルのコピーを行い履歴の管理をしていきます。

この特徴を分散型といいます。

Gitより前のバージョン管理の仕組みは、1つのサーバーのデータを複数人で更新していく集中管理型が中心でした。

バージョン管理の仕組み
分散型(Git) ⇔ 集中管理型(Gitより前:Subversionなど)

このことによって、次の2のメリットがあります。

  1. 障害に強い仕組み
  2. 開発の進め方の自由度が上がる

障害に強い仕組み

それぞれの端末にバックアップが作成されることになるため、何か問題が起きてもすぐに復旧できます。

このため、Gitは障害に強い仕組みといえます。

開発の進め方の自由度が上がる

Gitは開発の進め方の自由度が高いのが特徴です。

例えば、次のような開発の進め方が可能です。

変更を集中的に管理するような開発の進め方

それぞれのPCで行った変更をサーバーに集めて管理することができます。

集中管理型の仕組みに慣れている人にも親しみやすい開発の仕方です。

「統合マネージャ」を中心とした開発の進め方

基本となる場所への変更反映を行える人を一人決めておきます。この人を統合マネージャと呼びます。

他の人には統合マネージャが行った変更をコピーしてから追加の修正を加えてもらい、それを反映していきます。

オープンソースやGitHubのリポジトリでよく見られる開発手法です。

「独裁者と副官」の開発の進め方

大規模な開発で採用される開発の進め方です。

何人かの人(副官)がプロジェクトの特定のサブシステムを担当し、開発を行います。

「独裁者」は自分の部下の行った変更だけを確認し、基本となる場所に変更を反映します。

変更の反映が終わったら、それをそれぞれがコピーし、また開発を進めていきます。

(4) データ保証

Gitで行った変更にはIDが割り振られます。

変更のIDが変わっていなければ、データの内容が変わっていないことを保証するだけでなく、履歴に変更が加えられていないことが保証されます。

(5) ステージング

Gitにはステージング・エリアもしくはインデックスと呼ばれる場所が存在します。

これは、変更を確定する前のワンクッションとして設けられています。

ステージングの仕組みがあることで、変更が即座に確定されてしまうのではなく、内容を確認しながら確定するものを選ぶことができます。

(6) オープンソース

GitはGNU General Public License version 2.0というオープンソースライセンスの下でリリースされています。

これにより、Gitはソフトウェアの共有と変更の自由が保証されています。

※ただし、「Git」という用語とロゴの使用については混乱を避けるため、一定の制限が設けられています。

About – Git (Trademark)

Gitでできること

「Gitはコードの管理に使うもの」というイメージが強いかもしれません。

ですが、Gitができるのはそれだけではありません。

他にも、次のようなことが可能です。

  1. 画像の変更管理
  2. 文章の変更管理

画像の変更管理

Gitは画像の変更も検知できます。

これを利用してGitを画像の変更管理に利用するケースがあります。

Git単体でも画像に変更があったかどうかはわかりますが、より細かく管理するために、「Git LFS」という拡張機能と合わせて使用されることが多いようです。

文章の変更管理

Gitで文章を管理するケースも多いです。

有名所だと技術記事の投稿サイトZennはGitHubと連携して記事の管理を行うことができます。

Git管理とすることで、修正の履歴を分かりやすく管理することができます。

特に普段からGitを使っている人には親しみやすいですね。

GitHubやGitLabといったGitのサービスには変更のレビュー機能があります。

複数人で1つの文章を作っていて、適宜指摘を入れながら作り上げていくという場面にもGitは向いています。

Gitの基本用語

Gitを理解する上の基本となる用語を10個紹介します。

たくさんあって大変ですが、最後に復習用の一言まとめも載せているので、ご活用ください。

紹介する用語は以下の10個です。

  1. ワークツリー(worktree)
  2. リポジトリ(repository)
  3. クローン(clone)
  4. インデックス(index)
  5. コミット(commit)
  6. プッシュ(push)
  7. プル(pull)
  8. フェッチ(fetch)
  9. ブランチ(branch)
  10. マージ(merge)

※説明の中で、Gitのコマンド、Visual Studio CodeでGitを操作する方法が出てきます。
 実行するためには、事前にGitのインストールが必要です。

(1) ワークツリー(worktree)

ワークツリーとは、実際に作業をしているフォルダのことです。

Gitでは実際に作業をしているフォルダのことをワークツリーと呼ぶんだな」程度の理解で大丈夫です。

(2) リポジトリ(repository)

リポジトリとは、ファイルやフォルダの状態を記録する場所のことです。

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

  1. ローカルリポジトリ
  2. リモートリポジトリ

ローカルリポジトリは、自分のパソコン上に作成したGitで管理するデータの保管場所です。

対して、リモートリポジトリ複数のユーザーで共有できるリポジトリのことです。

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

リポジトリについて、より詳しい解説は次の記事を確認してください。

ローカルリポジトリを新規作成するには、git initコマンドを使用します。

git init

リポジトリの新規作成は、コマンドを実行する以外にもVisual Studio Codeの画面上で実行可能です。

Git Visual Studio Codeでのリポジトリ初期化

フォルダーを開いた状態で、ソース管理 > 「リポジトリを初期化する」をクリックします。

(3) クローン(clone)

git initに対して、すでにあるリモートリポジトリからコピーをしてローカルリポジトリを作成することをクローンといいます。

クローンを行うには、git cloneコマンドを実行します。

git clone コピーしたいリモートリポジトリ
git initとgit clone比較

クローンも、Visual Studio Codeの画面上で実行可能です。

Git Visual Studio Codeを使ったクローン1

フォルダーを何も開いていない状態で、ソース管理 > 「リポジトリのクローン」をクリックします。

Git Visual Studio Codeを使ったクローン2

コピー元のURLを入力するように求められるので入力します。

コピー先のフォルダーを選択します。

(4) インデックス(index)

インデックスは、ローカルリポジトリとワークツリーの間に設けられている場所です。

変更を確定する前のワンクッションになっています。

Git インデックスイメージ

変更したデータをインデックスに登録するには、git addコマンドを使用します。

git add ファイル名・フォルダ名
Git Visual Studio Codeでのgit add

Visual Studio Codeでインデックスへの登録を行うには、ソース管理 > 変更で、変更対象の横の+ボタンをクリックします。

(マウスを持っていくと変更をステージと表示されます)

(5) コミット(commit)

コミットとは、変更を確定するための操作です。

確定したデータがローカルリポジトリに登録されます。

コミットを行うためには、git commitコマンドを使用します。

git commit -m 変更内容のコメント
git addとgit commit
Git Visual Studio Codeでのコミット

Visual Studio Codeでコミットを行うには、ソース管理で、「どういう内容の変更なのか」コメントをいれたあと、ソース管理の横のチェックボタンをクリックします。

(マウスを持っていくとコミットと表示されます)

(6) プッシュ(push)

git push、git fetch、git pullのイメージ

プッシュとは、ローカルリポジトリの内容をリモートリポジトリに反映するための操作です。

プッシュを行うには、git pushコマンドを使用します。

git push リモートリポジトリの名前 反映させたいローカルブランチ名

Visual Studio Codeでプッシュを行うには、下記のいずれかの操作を行います。

  • 画面の下に↑(上向き矢印)が表示されているときにクリックする
  • ソース管理 > 「変更の同期」

※確定済みの変更がない場合は表示されません。

Git Visual Studio Codeでのpush1
Git Visual Studio Codeでのpush2

(7) プル(pull)

プルとは、リモートリポジトリのデータをローカルリポジトリに取り込むための操作です。

プルを行うには、git pullコマンドを実行します。

git pull リモートリポジトリの名前 取り込みたいリモートブランチ名
Git Visual Studio Codeでのpull

Visual Studio Codeでプルを行うには、画面の下に↓(下向き矢印)が表示されているときにクリックします。

(8) フェッチ(fetch)

フェッチリモートリポジトリの最新状態を確認するための操作です。

フェッチはプルとは違い、データの取り込みは行いません。

フェッチを行うには、git fetchコマンドを使用します。

git fetch
Git Visual Studio Codeでのgit fetch

Visual Studio Codeでフェッチを行うには、画面の下側、円形の矢印のアイコンをクリックします。

クローン・インデックス・コミット・プッシュ・プル・フェッチについても、下の記事で解説しています。

(9) ブランチ(branch)

ブランチとは、ソースの変更履歴を枝分かれさせて管理するための仕組みです。

デフォルトのブランチから分けて管理することで、変更の影響を少なくすることができます。

チェックアウト(checkout)を行うことで、ブランチを切り替えることが可能です。

git branchと実行することで、現在存在しているブランチの一覧を表示できます。

git branch

git branchのあとにブランチ名を指定すると、ブランチを新規作成できます。

git branch 新しいブランチ名

ブランチの切り替えにはgit checkoutコマンドを実行します。

git checkout ブランチ名

このとき、-bオプションを指定することで、ブランチを新規作成しつつ切り替えができます。

git checkout -b 新しいブランチ名

Visual Studio Codeでは、画面上でブランチの操作が可能です。

画面の下側に現在のブランチが表示されているのでクリックします。

Git Visual Studio Codeでのbranch操作1
Git Visual Studio Codeでのbranch操作2

現在存在しているブランチが表示されます。

「新しいブランチの作成」で新規ブランチを作成しつつ切り替えます。

(10) マージ(merge)

マージは、別のブランチで行った変更を取り込む操作です。

マージを行うには、git mergeコマンドを実行します。

git merge 取り込みたいブランチ名

ブランチとマージについて、詳しくは次の記事を確認してください。

復習のための一言まとめ

ここまでで解説した内容をそれぞれ一言でまとめました。

是非復習に活用してください。

用語説明
ワークツリー実際に作業をしているフォルダのこと
リポジトリファイルやフォルダの状態を記録する場所
クローンリモートリポジトリの内容をローカルリポジトリにコピーする操作
インデックス変更を確定する前にファイルやフォルダの変更状態を一時的に置いておく場所
コミットファイルやフォルダの変更を確定するための操作
プッシュローカルリポジトリの変更をリモートリポジトリに反映する操作
プルリモートリポジトリの変更をローカルリポジトリに取り込む操作
フェッチリモートリポジトリの最新状態を確認する操作
ブランチソースの変更履歴を枝分かれさせて管理するための仕組み
マージ別のブランチで行った変更を取り込む操作

Visual Studio CodeでGitを扱うには、「Git Lens」を入れるのがオススメ

Visual Studio Code上でGitを扱うなら、Git Lensという拡張機能をインストールするのがおすすめです。

Visual Studio Code上で複雑なGitの操作を行おうとすると、コマンドを入力するのとあまり変わらなくなってしまいます。

Git Lensであれば、複雑な操作も画面上のクリックで行えてしまいます。

Git Lensをインストールするには、以下のリンクにアクセスします。

GitLens — Git supercharged – Visual Studio Marketplace

Visual Studio Code拡張機能 Git Lensインストール画面

「Install」ボタンをクリックして、Visual Studio Codeに追加してください。

目次