STEP 01-4 GitHubの基本的な使い方を学ぼう
GitHubの導入方法から、ブラウザを使用したGitHubの使い方までを解説します
2章 GitHubの用語を理解しよう
GitHubでの作業の流れやよく使う用語について解説します。
以下は、本章を動画化したものです。本章は動画でもテキストでも学習いただけます。
以下は、上記動画で使用したスライドです。
2.1 本章の目標
本章では以下を目標にして学習します。
- GitHubの用語を理解すること
GitHubでは、普段あまり聞き慣れない用語がたくさん出てきます。
用語だけ見てもよく意味が分からなかったり、理解するのが難しそうなイメージがあるかもしれません。
本章ではいくつか代表的な用語を図解を交えて解説していきますが、一度にすべての用語を理解できなくても問題ありません。
実際にGitHub(Git)を使ってみないとイメージが難しい用語もあるので、今後の学習で少しずつ理解していきましょう。
もし今後の学習で用語の意味を忘れてしまった場合は、本章に戻って確認してください。
2.2 GitHubでの作業の流れを知っておこう
GitHubの用語を学習する前に、まずはGitHubでの作業の流れについて簡単に把握しておきましょう。
本節で説明する専門用語は、次節以降でも詳しく解説していきますのでご安心ください。
本節で説明する作業の流れは以下の通りです。
- GitHubとパソコンにファイルを保存するための保管庫を用意
- Aさんのパソコンでファイルを作成、保存
- AさんがGitHubにファイルをアップロード
- BさんがGitHubからファイルをダウンロード
まずはじめに、GitHub上にリモートリポジトリというファイルを管理するための保管庫を作成します。
また、チームメンバーそれぞれのパソコン内にも、ローカルリポジトリというファイルを管理するための保管庫を作成します。
つぎに、チームメンバーが管理、共有したいファイルをローカルリポジトリに保存します。そして保存したファイルをリモートリポジトリにプッシュ(アップロード)します。
GitHub上のリモートリポジトリに保存されたファイルは、他のチームメンバーもプル(ダウンロード)して共有することができます。
それぞれのチームメンバーは自分のタイミングでファイルを登録、更新、削除してプッシュやプルをすることができます。
仮にチームメンバー同士のプッシュやプルのタイミングが重なったとしても、ファイルが不整合になったり消失したりすることはありません。
ある程度の規模の開発チームの場合、ブランチというファイル管理を分岐させる機能をつかって、チームを分けて同時並行に共同開発をすることができます。
次節以降で各用語について詳しく解説していきます。
2.3 GitHubでよく使う用語を知ろう
GitHub(Git)でよく使う代表的な用語をご紹介します。学習量が多いため、適度に休みながら少しずつ読み進めていきましょう。
ローカルリポジトリ(local repository)
「ローカル」とは、自分のパソコンのことです。「リポジトリ」とは、保管庫のことです。
つまり、ローカルリポジトリとは「自分のパソコンの中にあるファイル(情報)を格納する保管庫」という意味です。
ファイルは自分のパソコン内にあるローカルリポジトリで管理されます。
Gitでファイルの管理を始めるには、まずはローカルリポジトリを作成します。
ローカルリポジトリのイメージは、以下の図のとおりです。
リモートリポジトリ(remote repository)
「リモート」とは、遠隔にある場所(つまりGitHub)のことです。
つまり、リモートリポジトリとは「GitHubの中にあるファイル(情報及び管理情報)を格納する保管庫」という意味です。
ファイルはリモートリポジトリの中に保存して、インターネット上のWebサービス(GitHub)でファイルを管理します。
GitHubでファイルの管理を始めるには、リモートリポジトリの作成が必要です。
リモートリポジトリのイメージは、以下の図のとおりです。
インデックス(index)
「インデックス」とは、ファイルをローカルリポジトリに登録する準備を行う場所です。
ファイルをローカルリポジトリに登録するには、まずはファイルをインデックスと呼ばれる場所に登録(add)するところから始まります。
インデックスに登録されたファイルをリポジトリに登録するには、コミット(保存)という操作を行います。
このようにローカルリポジトリにファイルを登録するには、段階を踏んで登録する必要があることを覚えておきましょう。
インデックスにファイルが登録されたイメージは、以下の図のとおりです。この時点ではローカルリポジトリにファイルは登録されていません。
コミット(commit)
「コミット」とは、インデックスに登録されたファイルをローカルリポジトリに登録することです。
ファイルを更新した場合、まずはファイルをインデックスに登録してからコミットを行い、ローカルリポジトリに登録する必要があります。
例えば、ファイルをインデックスには登録してもコミットを忘れてしまった場合、ローカルリポジトリには登録されないため気を付けましょう。
コミットのイメージは、以下の図のとおりです。
プッシュ(push)
「プッシュ」とは、ローカルリポジトリの内容をリモートリポジトリにアップロードすることです。
プッシュを行うと、ローカルリポジトリにコミットされている内容が、GitHubのリモートリポジトリにアップロードされます。
例えば、自分のパソコン内のファイルを変更した場合は、まずはローカルリポジトリにコミットまで行います。つぎに、ローカルリポジトリの内容をリモートリポジトリにプッシュします。
すると、チームメンバーも更新した内容をリモートリポジトリから確認することができます。
プッシュのイメージは、以下の(2)の作業です。
プル(pull)
「プル」とは、リモートリポジトリの内容をローカルリポジトリにダウンロードすることです。
プルを行うと、リモートリポジトリに保存されている内容が、パソコン内のローカルリポジトリにダウンロードされます。
例えば、チームメンバーによってリモートリポジトリの内容が更新されていた場合は、リモートリポジトリの内容をローカルリポジトリへプルします。
すると、自分のローカルリポジトリが最新化されるので、チームメンバーが更新した内容をローカルリポジトリから確認することができます。
プルのイメージは、以下の(3)の作業です。
ブランチ(branch)
「ブランチ」とは、リポジトリ内で行うファイルの管理を、用途に合わせて分岐させる機能です。
ブランチのメリットは、チームでアプリ開発を行う場合に作業を同時並行で進められることです。
例えば、アプリの新機能開発のため「新機能開発チーム」を作ったとします。ブランチも「開発用ブランチ」を作り分けておくと、それぞれのチームが並行して作業ができます。
分岐したブランチは他のブランチへ影響を与えません。「既存の保守チーム」のソースコードに誤って「新機能開発チーム」の開発中ソースが混じってしまうような心配もありません。
ブランチのイメージは、以下の図のとおりです。リモートリポジトリ内でmainブランチからdevブランチを作り、devブランチからファイル3を削除したイメージです。
mainブランチ(main branch)
「mainブランチ」とは、名前の通りメインとなるブランチのことです。
リポジトリには必ず1つのブランチが必要なため、まずはじめにmainブランチを作成することが一般的です。
個人での開発や小規模なアプリ開発であれば、ブランチを分けずにmainブランチ1つだけでも問題ありません。
メインとなるブランチ名は「main」以外の名前でも問題ありません。例えば「master」というブランチ名をメインとして使用することもあります。
マージ(merge)
「マージ」とは、あるブランチで行った変更を別のブランチに適用することです。
例えば、「開発用ブランチ」でバグの改修が終わった内容を「mainブランチ」にマージすることで、「mainブランチ」のバグが解消されます。
マージのイメージは、以下の図のとおりです。リモートリポジトリ内のdevブランチのファイル3を改修してから、devブランチをmainブランチにマージするイメージです。
クローン(clone)
「クローン」とは、既存のリモートリポジトリをパソコン内にコピーしてローカルリポジトリを作ることです。
GitHubにある既存のリモートリポジトリをクローンすると、自分のパソコン内にリモートリポジトリとまったく同じ内容のローカルリポジトリが作られます。
例えば、GitHubにある既存のリモートリポジトリを更新したいが、自分のパソコンにローカルリポジトリがない場合にクローンをします。
クローンをするとパソコン内にローカルリポジトリが新規作成されます。あとは通常通りローカルリポジトリを更新してプッシュすると、リモートリポジトリを更新できます。
クローンをした後でリモートリポジトリに変更があった場合は、毎回クローンを行う必要はありません。プルでローカルリポジトリを最新化できます。
クローンのイメージは、以下の図のとおりです。
プルリクエスト(pull request)
「プルリクエスト」とは、自分が更新したファイルの内容を、他のチームメンバーにレビュー(更新内容が正しいかチェック)してもらう機能のことです。
例えば、チームでmainブランチを使ってアプリ開発をしていると考えてみましょう。
そこでもし、mainブランチのソースファイルを自分が間違って修正してしまった場合、チーム全員のソースファイルにも影響が発生してしまいます。
そこで、プルリクエストの機能を使って自分が修正したファイルの内容が正しいかどうかを、チームメンバーにレビューしてもらいます。
チームメンバーがレビューして問題ないと判断された場合は、mainブランチにマージされる流れとなります。
一般的なmainブランチへのプルリクエストを作るイメージは、以下の図のとおりです。流れが複雑なため詳細に解説します。
(1)でローカルリポジトリのmainブランチから開発用ブランチ(dev)を作成します。
(2)で開発用ブランチのファイル3を削除してコミットした後に、開発用ブランチをリモートリポジトリにプッシュします。
(3)でGitHub上で開発用ブランチを元にプルリクエスト(PR)を作成すると、チームメンバーにレビュー依頼の通知が届きます。
チームメンバーのレビューが通れば、(4)で開発用ブランチの内容をmainブランチにマージして、ファイル3の削除がmainブランチに反映されます。
ここまでで用語の解説は終了です。GitHub(Git)の用語は理解やイメージが難しいと感じたのではないでしょうか。
本章では用語の概要だけは掴んでおいて、今後の学習でGitHub(Git)を使いながら少しずつ理解を深めていきましょう。
本章の学習は以上です。お疲れさまでした。
まとめ
本章では以下の内容を学習しました。
- ローカルリポジトリ(local repository)は、自分のパソコン内の保管庫のこと
- リモートリポジトリ(remote repository)は、GitHubの保管庫のこと
- インデックス(index)は、リポジトリへのファイル登録の準備を行う場所のこと
- コミット(commit)は、リポジトリにファイルを保存すること
- プッシュ(push)は、ローカルリポジトリの内容をリモートリポジトリにアップロードすること
- プル(pull)は、リモートリポジトリの内容をローカルリポジトリにダウンロードすること
- ブランチ(branch)は、ファイルの管理を、用途に合わせて分岐させる機能のこと
- mainブランチ(main branch)は、メインで使うブランチのこと
- マージ(merge)は、あるブランチで行った変更を別のブランチに適用すること
- クローン(clone)は、既存のリポジトリをパソコン内にコピーしてローカルリポジトリを作ること
- プルリクエスト(pull request)は、自分が更新したファイルの内容を、他のチームメンバーにレビューしてもらう機能のこと
本章の学習は以上です。お疲れさまでした。
次章では、GitHubを導入する方法について解説します。
確認テスト
Q1 GitHubでの作業の流れにおいて、ファイルを共有する手順として正しいものはどれか。
- ファイルをローカルリポジトリに保存し、それをGitHub上のリモートリポジトリにプッシュする。
- GitHub上にリモートリポジトリを作成し、ファイルをダウンロードする。
- ファイルを作成し、GitHub上のリモートリポジトリに保存する。
- リモートリポジトリからファイルをプルしてローカルリポジトリに保存する。
Q2 Gitでファイルの管理を始めるために、最初に作成するものはどれか。
- リモートリポジトリ
- インデックス
- ローカルリポジトリ
- コミット
Q3 プッシュ(push)の意味として正しいものはどれか。
- ローカルリポジトリの内容をリモートリポジトリにアップロードする
- リモートリポジトリの内容をローカルリポジトリにダウンロードすること
- リポジトリ内でファイルの管理を分岐させること
- 既存のリモートリポジトリをパソコン内にコピーしてローカルリポジトリを作ること
正解
解説 | ||
Q1 | 1 | チームメンバーはまずファイルを自分のローカルリポジトリに保存し、その後プッシュしてファイルをGitHub上のリモートリポジトリに共有します。 2.ダウンロードは他のメンバーがリモートリポジトリからファイルを取得する際に行います。 3.ファイルの作成と保存はローカルで行います。 4.プルは他のメンバーがリモートリポジトリからファイルを取得する際に行います。 |
Q2 | 3 | ファイルの管理を始めるには、まずローカルリポジトリを作成する必要があります。ローカルリポジトリは自分のパソコン内にあるファイルの保管庫であり、ファイルの管理を行います。 1.リモートリポジトリはGitHubなどの遠隔にある場所に存在し、ファイルとその管理情報を格納する保管庫です。ファイルの管理を始めるためには、まずローカルリポジトリを作成します。 2.インデックスはファイルの登録準備を行う段階で使用します。最初に作成するものではありません。 4.コミットはインデックスに登録されたファイルをローカルリポジトリに正式に登録する操作ですが、最初に作成するものではありません。 |
Q3 | 1 | プッシュは、ローカルリポジトリの内容をリモートリポジトリにアップロードすることです。 2.リモートリポジトリの内容をローカルリポジトリにダウンロードするのは、 プル(pull) です。3.リポジトリ内でファイルの管理を分岐させる機能は、 ブランチ(branch) です。4.既存のリモートリポジトリをパソコン内にコピーしてローカルリポジトリを作る操作は、 クローン(clone) です。 |