プログラミング Git

【Git】GITとは何か?GITの概念を解説します

GITとは何か?

難しい言い方をすれば「分散型バージョン管理システム」です。
もう少し簡単に説明していきたいと思います。

もう少し簡単な言い方をすると「ファイルのバージョン管理が簡単にできるツール」です。
バージョンとは、ファイル(htmlファイル、cssファイル、jsファイル などなど)を編集して、更新した履歴だと思っていただければ大丈夫です。

バージョン管理 = 履歴の管理のことをいいます。

誰が、どのファイルに、何を書き込んだのか、何を削除したのか、編集前とどう変わったのかを**バージョン(履歴)**として残しておき、それを履歴として残しておくことができます。

また、確認ができて、必要であればそのバージョンまで戻すことも可能です。
つまり、バックアップなどを取る必要はなくなるということです。

Gitで何ができるのか?

以下がGitを導入することで得られるメリットかと思います。

  • 以前のバージョンにファイルを戻すことが可能 = バックアップとして復元することができる
  • 複数人で同じファイルを編集して、それを統合することができる = 同じファイルを触っても上書きにはならない
  • 履歴を複数人で共有することができる = 誰が、いつ、どのファイルに、どんな編集をしたかを管理することができる

リポジトリについて

Gitを学習していく上で必ず覚えておく必要があるのが、「リポジトリ」という言葉です。
リポジトリとは、ファイルや履歴を保存するためのストレージのことで、簡単に言うと「ファイルの保管庫」です。

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

  • リモートリポジトリ(管理するサーバー上に存在します)
  • ローカルリポジトリ(ローカルのPC上に存在します)

リモートリポジトリは管理するサーバー(Web)上に置かれており、一つのGitシステムに一つ設置して、各ユーザー共通で使用します。

ローカルリポジトリは各ユーザーがPC上に持っています。

基本の4つのアクション(add・commit・pull・push)

GITを扱う上で、4つ(「add」「commit」「pull」「push」)のアクションとその意味を覚えて理解できれば、何とかなるかと思います。
重要とも言えるこの4つについて解説したいと思います。

「add」(アド)
addとは履歴を残す前の仮登録のようなもので、commit(コミット)を行う前の準備(ファイルを編集したことをインデックスに登録する)作業になります。
ツールを使ってGitを操作する場合は、このaddの作業は自動で勝手にやってくれる事がほとんどです。

「commit」(コミット)
commitは、addを行ったと後に、自分のローカルリポジトリに作業内容の履歴を保存する作業のことです。
コミットを実行するとファイルを編集した内容・日時・作業者を記録したファイルが生成されて保存されます。

「pull」(プル)
pullは、共有しているリモートリポジトリに保存されているファイルの中で、自分のローカルリポジトリに存在しないファイルや、他のユーザーが更新したファイルのみをダウンロードするという機能です。
他の人の作業した履歴を自分のローカルリポジトリのファイルに反映させる作業となります。

「push」(プッシュ)
pushは、自分のローカルリポジトリにあるファイルをリモートリポジトリにアップして保存する作業になります。
自分のローカルリポジトリにある内容を、リモートリポジトリにアップ・反映させる。という感じです。

自分がpush(管理するサーバーにアップ)して、更新したリモートリポジトリを、他のユーザーがpull(ローカルのpcにダウンロード)して落としてくるといった形で、リモートリポジトリを共有することになります。

作業の流れ「add・commit・pull・push」

【1】自分の手元(ローカルpc)でファイルを編集する。

【2】編集したファイルをaddでインデックスに登録する。

【3】インデックスに登録した内容をcommitして、履歴として、ローカルリポジトリに保存する。

【4】ローカルリポジトリをリモートリポジトリに登録する時に、他のユーザーがリモートリポジトリを更新していた場合、一旦pullしてリモートリポジトリの内容を、ローカルリポジトリに落としてくる。(同期する)
※リモートリポジトリが更新されていない場合は、pullは不要となります。

【5】リモートリポジトリの内容をローカルリポジトリに取り込んだ後、ローカルリポジトリの内容を、リモートリポジトリにpushして保存する。

すでにGit管理されているところに参加する

すでにGit管理されているところに自分も参加する場合には、上記のアクションの前にclone(クローン)というアクションが必要です。

cloneとは、簡単に言うとダウンロードのことです。
リモートリポジトリには、すでに保存されているファイルや、変更履歴が存在しているので、これを自分のローカルリポジトリとしてダウンロードしてくることです。
cloneをすることで、今までの履歴を自分のローカルに取り込み、管理することができるようになります。

Gitを更に使いこなす

ここまで、Gitの基本機能の「バージョン管理」について説明してきました。
ここからはGitを更に使いこなすために、もう一歩踏み込んで説明したいと思います。
「branch」「merge」「fetch」という3つのアクションについてです。

まずは「branch」(ブランチ)です。branchはGitを使う上でとても大切な概念になります。
しっかり理解しておきたいところです。

branch」とはファイルを編集した履歴を分岐させて記録していく機能のことです。

プログラムのコーディングをしていく上で、バグの修正や、機能・ページの追加などのファイル編集作業は、複数の作業者が同時に平行して行うことがあるかと思います。同時に並行して行われる作業を正確に管理するために「branch」を使用します。

branchは大きく分けると以下の2つに分類できるかと思います。

  • マスターブランチ
  • 作業用ブランチ

マスターブランチは、メインのブランチのことで、「本体」(マスターファイル)だと思ってください。
このマスターブランチから、その他のブランチ(作業用ブランチ)を作成することを「ブランチを切る」と言います。
※実際にはマスターブランチからブランチを切って、さらにそのブランチからブランチを切ることもあります。

ブランチ」とは現在のバージョンをコピーして、別の作業空間を作るイメージです。

マスターブランチから、その時点をベースに別の作業用ブランチを作成して、並行して作業を行うことができます。

その他のブランチで行っている作業は、マスターブランチには全く影響を与えません。

このようにお互い干渉しない、ブランチを作って、別々の世界として作業を行うことができます。

「branch」について理解できたところで、次は「merge」(マージ)についてです。

「merge」とは作成されたブランチで作業を行い、それを他のブランチに統合する作業のことを指します。

mergeした時に、同じファイルの同じ箇所を編集していた場合は、競合エラー(コンフリクト)というのが起こり、どっちの編集を残すかを編集してから、mergeすることができます。

最後に「fetch」(フェッチ)についてです。
リモートリポジトリからファイルの最新情報を取得してきて、リモートリポジトリが更新されていないかを確認する作業のことでです。
前に説明した「pull」(プル)とは違って、ローカルのファイルを更新されることはありません。ちなみに「pull」、このフェッチとマージを同時に行う機能です。

学習教本の紹介

Gitの概念はもちろん、GitHubについても丁寧に解説しています。

これからGitを使い始める人にオススメの1冊です。
本書ではクリック操作でGitを使えるSourceTreeを中心に解説しているので、初心者でも安心です。

実際のワークフローをイメージしながら実践的なGit/GitHubの使い方が身につく「いちばんやさしい」入門書です。前半は、手元のパソコンでファイルを実際にバージョン管理しながら基本的な使い方を解説。後半では、実践的なワークフローに沿ってチームメンバーと一緒に開発を進めるための知識が身につきます。全体を通し、コマンドラインを使った操作が中心であることも大きな特徴です。改訂版では、新しいGitコマンドやGitHubの機能に対応したのに加え、知っておくと実務で役に立つ新しい慣習も紹介しています。

まとめ

以上がGitの基本概念の説明となります。
複数人で作業するときにはすごく便利で、今やどこの現場でも必須レベルのツールだと思います。
実際にGitを使うには、概念だけでは扱えないので、使い方や、Gitを操作するツールのことも学んでいく必要があります。また別の記事でお話したいと思います。

-プログラミング, Git

error: Content is protected !!
S