(第2回)やさしいGit(バージョン管理システム)の使い方講座

(第2回)やさしいGit(バージョン管理システム)の使い方講座

目次

はじめに
GitHubとは: 代表的なGitホスティングサービス
GitHubのアカウントを作成する
リモートリポジトリをGitHub上に作成する
リモートリポジトリのコピーをローカルに作成(クローン)
ローカル上の変更をリモートリポジトリに反映(プッシュ)
次回予告

はじめに

前回は、Git等のバージョン管理システムにおける「コミット」、「ブランチ」、「マージ」の基本的な考え方について掲載しました。今回は、ネットワーク上に存在するリポジトリリモートリポジトリ)への操作を「GitHub」を用いて解説してみようと思います。

GitHubとは: 代表的なGitホスティングサービス

Gitのホスティングサービスには、BitbucketGitLabなど便利なサービスが複数ありますが、その中でも最も有名なサービスとしてGitHubが挙げられます。 名前が似ているため、最初は違いが分かりにくいのですが、Gitは「バージョン管理システム」そのものを指しているのに対し、GitHubは「Gitを使ったWEBサービス」を指しています。

前回、Git(Sourcetree)を使って自分のPC上に「ローカルリポジトリ」を作成しましたが、その対義語として、ネットワーク上に存在している共有リポジトリのことを「リモートリポジトリ(中央リポジトリ)」と呼んでいます。GitHubとは、「リモートリポジトリを作成・管理する場の一つとして提供されているWEBサービスです。
  (※ リポジトリ:ソースコードや、その変更履歴が保管されている倉庫のようなもの)

コードレビューを効率的に行う仕組みとして「プルリクエスト」など、GitHubには代表的な機能がいくつかありますが、その他にもメモ書きやタスク管理ツールなど、開発者同士のコミュニケーションの場としても多種多様な機能が提供されており、 GitとGitHubは互いに切り離せない存在となっています。


前回の記事では、Gitの簡単な使用方法を中心に「ローカルリポジトリ」の作成について掲載しましたので、今回はGitHubを用いて「リモートリポジトリ」の操作方法について解説してみようと思います。

GitHubのアカウントを作成する

初めに、GitHubのアカウントを作成します。
GitHubのトップページ(https://github.com/)にアクセスし、「ユーザーネーム」、「メールアドレス」、「パスワード」を入力し、画面下部の「Sign Up for GitHub」をクリックします。

正常に作成が完了すると下記の画面が表示されるので、画面下部の「Join a free plan」をクリックします。

使用目的などの簡単な質問(任意)があります。下部の「Complete Setup」を入力すると次の画面へ進みます。

最後に認証用のメールが送信されるので、送信されたメールを確認の上、認証を行います。
認証が済むとアカウント作成は完了です。

リモートリポジトリをGitHub上に作成する

Githubのトップページ左側にある、「Create repository」をクリックし、リポジトリ作成画面へ移動します。

次の画面では、下記の通り、リポジトリ作成に必要な項目を入力します。
 ・「Repository name」…任意のリポジトリ名を入力
 ・「Public」「Private」を選択。
   ※「Public」を選択した場合 … 他のユーザーがソースコードを閲覧することが可能となります。
   ※「Private」を選択した場合 … 他のユーザーには 非公開となります。

今回は、「Repository name」にはtestを入力し、「Public」を選択しています。
(それ以外の項目はデフォルトの状態です)

入力が完了したら「Create repository」ボタンをクリックします。

リポジトリを新規に作成すると、下記のようなページが表示され、ユーザー名の後ろに先ほど入力したリポジトリ名が表示されます。

新規作成したリポジトリにファイルを追加するため、テスト用のファイルを作成し、拡張子をHTMLに変えておきます。

画面上部の「Add file」ボタンをクリックすると、アップロードするファイルを選択するダイアログが表示されるので、先ほど作成したファイル(test.html)を選択します。

アップロードが完了すると、リポジトリ画面の下部にアップロードしたファイル名が表示されます。

リモートリポジトリのコピーをローカルに作成(クローン)

リポジトリ画面中央の「Code」ボタンをクリックし、ダイアログを開きます。

表示されたダイアログ内で赤枠のボタンをクリックすると、先ほど作成したリポジトリのURLがコピーされます。
ここでコピーしたURLを使用し、ローカルにリモートリポジトリのコピーを作成します。

前回使用した「Sourcetree」を開き、画面上部の「新規」タブから「URLからクローン」を選択します。

・クローンするリポジトリのURL(先ほどコピーしたURL)
・ローカルの保存先フォルダパス(任意の場所にフォルダを新規作成しておく)
・リポジトリ名

の3つをそれぞれ入力し、右下の「クローン」をクリックします。

下の画像の通り、ローカルに新しくリポジトリが追加されたことが確認できます。

「クローン」を行うことにより、GitHub上に作成された「リモートリポジトリ」
「ローカルリポジトリ」として、自分のPCにコピーすることが出来ます。

を行うことにより、GitHub上に作成された「リモートリポジトリ」
「ローカルリポジトリ」として、自分のPCにコピーすることが出来ます。

ローカルにクローンしたリポジトリを開くと、先ほど追加したテストファイル(test.html)の存在が確認できます。

ローカル上の変更をリモートリポジトリに反映(プッシュ)

ローカルにコピーを作成することが出来たので、今度はローカルで行った変更をGitHub上のリモートリポジトリに反映させてみようと思います。

まずは、画面左上の「ブランチ」をクリックします。

新規ブランチ」欄に新規作成するブランチ名を入力し、「ブランチを作成」をクリックします。

元々あった「main」ブランチの下に、「test_branch」が追加されたことが確認できます。

前回の記事に掲載した通り、「ブランチ」を行うことで「main」ブランチと全く同じ内容のリポジトリが、枝分かれする形で「test_branch」として作成されます。

基本的に「main」ブランチは、「公開可能な主流のソースコード」として確立させます。
「main」ブランチから枝分かれする支流を作るように「ブランチ」を行っていき、最終的に複数人のコードレビューなどを介した最終形を順次「main」ブランチに合流(マージ)させていきます。
(本記事では、プルリクエスト等を用いたレビューやマージの流れは省略しています)

誰が何の目的で改修を行ったかが後からわかりやすく、問題が起こった時の切り戻しが容易である、といったメリットに加え、レビュー後のマージを徹底し、不完全な状態のコードが公開版に含まれないようにすることで、コードの保全性をより高めることが出来ます。

「test_branch」を作成したら、リモートリポジトリからローカルリポジトリへコピー(クローン)を行った際に指定したフォルダを開きます。
テストで作成したファイル(test.html)が存在しているので、拡張子を「txt」に変えて、内容を編集してみます。

ファイルを開き、下記の通り任意の内容を追記します。
(ここでは、7行目に「Push」を追加しています)

画面右下に先ほど追加した一文が新たに追加されていることを確認し、画面下部「test.html」にチェックを入れたら、左上の「コミット」をクリックして変更をローカル内のリポジトリに反映させます。

コミットメッセージ(コミット内容の説明)」を入力する欄が表示されるので、内容を入力し右下の「コミット」をクリックします。

画面上部の「Uncommitted Changes」表記が消え、変更内容がローカルリポジトリに反映(コミット)されたことが確認できます。

画面左にある「ブランチ」欄の「main」をクリックすると、画面中央の赤枠内に先ほど作成した「test_branch」が新しく追加されています。「test_branch」内で行った変更を「main」ブランチに反映させるため、「マージ」を行います。

画面左にあるブランチ欄の「main」ブランチ〇が付いている状態(チェックアウト)で、その下の「test_branch」を右クリックし、「test_branchをmainへマージ」を選択します。

マージを実行すると、画面中央に「1 ahead」タグが追加され、「main」と「test_branch」タグが同じ列になりました。この状態で、「test_branch」内で変更した内容が「main」ブランチに反映(マージ)されています。

最後に、ローカルリポジトリで行った変更を、画面左上の「プッシュ」によりリモートリポジトリ(Github上のリポジトリ)へ反映させます。

プッシュ」をクリックすると、ログインを求める画面が表示されるので、冒頭で作成したGitHubのユーザー名とパスワードを入力します。

プッシュ処理が完了後、ブラウザからGitHubのトップページを開き、先ほどのリポジトリ画面から「test.html」の内容を見てみると、先ほどローカルリポジトリ内で変更した内容GitHub上のリポジトリにも反映されていることが確認できます。

次回予告

以上が、GitHubを使用したリモートリポジトリの作成・操作方法になります。次回は、「フォーク」、「プル」、「プルリクエスト」等の基本操作や、変更内容の衝突時(コンフリクト)の対応方法などについて掲載しようと思います。