素の Git による環境構築については以前の記事で解説いたしましたので、今回は GitHub を利用したソース管理の環境を構築する手順を説明したいと思います。
GitHub を利用するメリットはなんといってもブラウザ画面からの GUI での操作が可能なこと。
視覚的にわかりやすく、コマンドラインでの操作よりもはるかにとっつきやすいです。
リポジトリの環境構築も画面上だけで完結し、わざわざサーバを用意する必要もありません。
中央リポジトリの作成
Git による開発環境・テスト環境・本番環境の構成は以下のようになります。

それぞれの環境についての説明については過去の記事を参照してください。
参考: Git を利用した開発環境・テスト環境・本番環境の構成
中央リポジトリの部分が GitHub になります。
素の Git では中央リポジトリは自身でサーバを用意し環境を構築する必要がありますが、GitHub の場合はブラウザ画面上から操作するだけで環境構築が完了します。
トップページの赤枠部分から新しくリモートリポジトリを作成します。

リポジトリ作成画面にてリポジトリ名やリポジトリの公開/非公開、README
や.gitignore
ファイルの作成、ライセンスの種類を選択し、「Create repository」をクリックします。

これでリモートリポジトリが作成できました。

後々、設定等が必要になりますが、これだけで中央リポジトリ環境が構築できるのは便利ですね。
なお、GitHub では新規に作成されるリポジトリのデフォルトブランチ名がmaster
からmain
に変更されました。
ちなみにリポジトリの削除は Settings → General の一番下にあります。
develop リモートブランチの作成
これもブラウザ画面上から簡単に作成できます。
リポジトリのトップ画面より、ブランチ操作ボタン(赤枠の部分)をクリックします。

テキストエリアに develop と入力し、「Create branch : develop from main」をクリックします。

これでdevelop
ブランチの作成が完了しました。
以降、ブラウザ画面上でブランチを切り替える場合はこのボタンを使用します。

プロテクションルールの設定
なにやら警告文がでてますね(上図矢印部分)。
ブランチのプロテクションルールを設定した方が良さそうです。
この警告文をクリックするか、Settings → Branches に移動します。

ここでは最低限、プルリクエストの設定を行いましょう。
他にも様々なルール設定がありますが、説明は別の機会にしたいと思います。
※なお private でブランチ保護ルールを適用するためには、組織アカウント(有料)が必要なようです。

Protect matching branches の Require a pull request before merging にチェックを入れます。
これにより、当該ブランチのマージにはプルリクエストの発行が必須となります。
Require approvals
ブランチのマージには承認が必要となります。
マージが可能となる承認数を Required number of approvals before merging で設定します。
Require review from Code Owners
ブランチのマージには特定のレビュアー(Code Owner)の承認を必須とします。
自身のリポジトリを公開する方は自分自身をレビュアーに設定しておいた方が安心かもしれません。
レビュアーの指定方法ですが、.github/CODEOWNERS
というファイルを作成し、その中に各ソースコードに対する Code Owner を指定します。
Code Owner が指定されたファイルを含むプルリクは、該当する Code Owner すべての承認が必要となります。
書式は以下の通りです。
# すべてのソースコードに対して yanox2 の承認が必要
* @yanox2
# ソースコードにワイルドカードが使えます
*.php @johndoe
# ディレクトリ指定も可能
database/ @johndoe @yanox2
main
ブランチおよびdevelop
ブランチの両方に設定しておきましょう。
ブランチの追加は「Add rule」、編集は「Edit」ボタンをクリックします。

開発環境の作成(git clone)git clone
コマンドでリポジトリを開発環境に複製します。
リポジトリの場所は、トップ画面の「Code」ボタン(赤枠の部分)をクリックすることで参照できます。
HTTPS でアクセスする場合は HTTPS のタブを、SSH でアクセスする場合は SSH のタブをクリックします。

git コマンドを利用するため、Git をインストールします。
# Linux
>yum -y install git # CentOS
>apt-get install git # Ubuntuなど
Git for Windows
https://gitforwindows.org/
HTTPS でアクセスする場合
GitHub では private なリポジトリでも URL によるリポジトリ参照が可能です。
2段階認証が必須となったことでgit clone
の際のパスワード認証は廃止され、アクセストークンが必要となりました。
>git clone https://github.com/yanox2/TestRep.git
Cloning into 'TestRep'...
Username for 'https://github.com': yanox2
remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/yanox2/TestRep.git/'
アクセストークンはユーザー個人設定から取得できます。
ヘッダメニュー右上のユーザーアイコンより settings をクリックし、左メニューより Developer settings をクリックします。

左メニューより Personal access tokens をクリックし、「Generate new token」ボタンをクリックします。

2段階認証の画面が出た場合は認証コードを入力します。
アクセストークン生成画面で、トークン名(note)や期限(Expiration)を設定します。
スコープはとりあえずrepo
を指定しておけばフルコントロールになります。

画面下部の「Gererate token」をクリックして生成が完了です。
画面上に生成されたアクセストークンが表示されますのでこれを保存しておきます。
1回しか表示されませんので、必ずこの画面でトークンをコピーしてどこかにメモっておく必要があります。
保存したアクセストークンを元に、以下のようにgit clone
します。
# git clone https://{アクセストークン}@github.com/{アカウント名}/{リポジトリ名}.git
>git clone https://XXXXXXXXXX@github.com/yanox2/TestRep.git
Cloning into 'TestRep'...
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (5/5), done.
SSH でアクセスする場合
SSH でアクセスする場合は、SSH キー(秘密鍵・公開鍵)が必要となりますので、まずはこれを作成します。
※ssh-keygen
コマンドを利用するには Git をインストールする必要があります。
>ssh-keygen -t rsa
キーの保存先やパスフレーズの設定を聞かれますが、そのままEnter
を繰り返したデフォルト設定で大丈夫です。
なお、キーの保存先はデフォルトでは以下の場所にid_rsa
、id_rsa.pub
の名前で保存されますので、もしすでに作成しているキーが存在している場合は退避しておいてください。
Windows
%UserProfile%\.ssh
Linux
/home/{ユーザー}/.ssh
次に作成した SSH キーの秘密鍵を GitHub に登録します。
SSH キーの登録は2種類あります。
リポジトリ専用のキーを作成する
当該リポジトリでのみ使用できるキーを作成します。
リポジトリへアクセスできるディストリビューターで共有するような運用が可能となります。
当該リポジトリの上部メニュー「Settings」より左メニュー「Deploy keys」をクリックし、「Add deploy key」ボタンをクリックします。

Title にタイトルを入力し、Key に秘密鍵(id_rsa)の内容をコピーします。
コピーする内容はヘッダ部(—–BEGIN OPENSSH PRIVATE KEY—–など)やフッター部も含めてコピーします。

Allow write access にチェックを入れることで、git push
が可能となります。
チェックを入れない場合は参照のみとなります。
「Add key」をクリックして登録完了です。
個人専用のキーを作成する
自分自身だけが使用できるキーを作成します。
このキーは当該ユーザが GitHub 全体でアクセス可能なすべてのリポジトリに対して利用できます。
ただし個人の設定ですので、他者は利用できません。
ヘッダメニュー右上のユーザーアイコンより settings をクリックし、左メニューの SSH and GPG keys をクリックします。

「New SSH key」ボタンをクリックすると SSH キー作成画面が出てきますので、キーの名称と先ほど作成した公開鍵(id_rsa.pub
)の内容を入力し、「Add SSH key」ボタンをクリックして完了です。

作成された SSH キーの情報が表示されます。
SSH でアクセスする場合のリポジトリの場所は、トップ画面の「Code」ボタンで SSH タブを選択します。

git clone する
SSH の設定ができたところで、実際にgit clone
してみましょう。
# git clone git@github.com/{アカウント名}/{リポジトリ名}.git
>git clone git@github.com:yanox2/TestRep.git
Cloning into 'TestRep'...
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (5/5), done.
もし、以下のようなエラーが出たら、
Cloning into 'TestRep'...
Permission denied (publickey).
fatal: Could not read from remote repository.
キーファイルの場所を見つけられなかったようなので、以下のように-c
オプションにてcore.sshCommand
を指定するか、SSH 接続のコンフィグファイルにあらかじめエイリアスを設定しておきます。
# -c core.sshCommand="ssh -i キーの場所とキーファイル名"
>git -c core.sshCommand="ssh -i ./keys/id_rsa" clone git@github.com:yanox2/TestRep.git
# エイリアスを指定
>vim /home/ec2-user/.ssh/config # Linux
>vim %UserProfile%\.ssh\config # Windows
Host TestRep
Hostname github.com
User git
IdentityFile ./keys/id_rsa
>git clone TestRep:yanox2/TestRep.git
Cloning into 'remote'...
remote: Enumerating objects: 5, done.
remote: Counting objects: 100% (5/5), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (5/5), done.
これで中央リポジトリと開発環境が構築できました。
ステージングやプロダクションのデプロイ環境については別記事で解説したいと思います。
参考: GitHub のタスク管理やプロジェクト管理を利用した運用方法
参考: GitHub Actions を利用した本番環境適用(デプロイ)の方法
コメント