目的
この記事では、GitHubへの新規登録からローカルブランチを作成するまでの開発準備について説明する。
事前説明
Git、GitHubのリポジトリ構成イメージ
-
Gitリポジトリ
Gitリポジトリは、Gitで管理される変更履歴を記録するローカルのデータベースで開発者のPCやローカル環境に保存される。
個人やチームでバージョン管理をローカル環境で行う場合に使用され、オフラインでも利用可能。
他の開発者との共有には、別途リモートリポジトリが必要となる。
リモートリポジトリを利用する場合は、GitHubやGitLab、BitbucketなどのGitリポジトリをホスティングするWebサービスを利用する。 -
GitHubリポジトリ
GitHubは、Gitの機能を拡張し、共有やコラボレーションを行うためのWebサービスでチームやオープンソースプロジェクトで開発する場合に使用する。
GitHubリポジトリは、GitリポジトリをGitHubプラットフォーム上でホストしたもので単にリモートリポジトリと呼ばれることが多い。
オンラインでホストされ、他の開発者とリポジトリを共有でき、pullリクエストやIssue管理、アクションの自動化など、GitHub独自の機能が利用可能。
GitHubリポジトリをリモートリポジトリとして利用し、ローカルと同期しながらソース管理する。
一般的に開発者がローカル管理しているリポジトリをローカルリポジトリ、GitHubやGitLab、BitbucketなどのVCS(Version Control System)を介してネットワーク上で管理しているリポジトリをリモートリポジトリという。
Gitブランチと運用
-
Gitブランチ
Gitブランチとは、複数の開発者が同時に修正しても互いに影響を受けないよう機能単位または、開発者もしくはグループ単位に割り当てる開発領域のこと。
ブランチ上で行った変更履歴もそれぞれ記録され変更後、ブランチ同士のマージを行いソース管理していく。
初期状態では、Gitリポジトリの作成と同時に作られるmaster(※)ブランチのみ存在し、このmaster(※)ブランチがすべての起点となる。
※ 2020年10月1日以降、デフォルトブランチ名がmastarからmainに変更されている。 -
統合ブランチとトピックブランチ
通常運用のmasterブランチは、リリース可能なリビジョンが常に切ってある統合ブランチとして使用される。
また、統合ブランチを起点とし、不具合修正、仕様変更などの課題単位に作成するブランチをトピックブランチという。
変更後は、課題単位に作成されたトピックブランチを統合ブランチにマージする。
統合ブランチにマージ後、不要となったトピックブランチは削除する。
トピックブランチ名は、改修内容が分かりやすいようにプロジェクト内の課題管理方法に準じた名前にするのが一般的。
※ 課題管理番号を含めた短い名前にすることが多い。
実施内容
GitHubのアカウント準備
-
Githubのアカウント登録 https://github.com からアカウント登録(Sign up)する。
-
メール認証
登録したメールアドレス宛にメール「[GitHub] Please verify your email」が来るので、本文内のURLにアクセスしメール認証を完了させる。 -
有料プラン変更
(1) 右上のプロフィールアイコンからSettingsリンクをクリック。
(2) 左側のサイドメニューからBillingリンクをクリック。
(3) Billing overviewセクションのPlanにあるGet private repositoriesボタンをクリック。
(4) Upgrade summaryセクションのPay monthly / Pay yearlyラジオボタンを選択。
(5) Billing informationセクションのAdd a Payment Methodリンクから支払い方法を指定。
(6) 必須情報の入力後、Upgrade planボタンをクリックする。
(7) (6)の後、Billing overviewセクションのPlanにPersonal - Unlimited private repositoriesと表示されていれば、有料版へプラン変更が正常に完了。
SSHの公開鍵、秘密鍵の生成
通信手段は、SSHを利用する。
-
id_rsa(秘密鍵)、id_rsa.pub(公開鍵)の生成
homeディレクトリに.ssh
フォルダを作成後、そのフォルダに移動し、ssh-keygen
を実行。$ mkdir ~/.ssh $ cd ~/.ssh $ ssh-keygen -t rsa -C "GitHubに登録したメールアドレス" Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): # Enter押下 Enter passphrase (empty for no passphrase): # 新規のパスワードを入力 Enter same passphrase again: # 確認用のパスワードを入力 Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: …
-
秘密鍵、公開鍵の生成確認
$ ls ~/.ssh id_rsa id_rsa.pub
-
秘密鍵、パスフレーズの登録
ssh-add
で、SSH接続時にパスワード入力を省略する設定を行う。ssh-add
は、OSによって実行方法が若干違うので注意。$ eval `ssh-agent` # ssh-agent起動(evalなしだと環境変数の設定が必要) $ ssh-add ~/.ssh/id_rsa $ ssh-add -l # 登録確認 2048 ********** /root/.ssh/id_rsa (RSA) # このように表示されば正常に登録されている
-
GitHubに公開鍵を登録
(1) 右上のプロフィールアイコンからSettingsリンクをクリックする。
(2) 左側のサイドメニューからSSH and GPG Keysリンクをクリックする。
(3) SSH Keysセクションの右側にあるadd SSH Keyボタンをクリックする。
(4) Titleテキストボックスに任意の端末認識ができるような分かりやすいタイトルを記入する。
(5) 上記 秘密鍵、パスフレーズの登録で生成された id_rsa.pub(公開鍵) ファイル内すべてをKeyにコピー&ペーストする。
(6) Add keyをクリックして保存する。
(7) GitHubのログインパスワードの入力を求められるので入力する。
(8) (3) で表示した画面に切り替わりSSH keysセクションに上記 (4)で設定したTitleが表示されていれば成功。 -
接続確認
最後の2行は、GitHubはシェルアクセスを提供しない(許可しない)旨のメッセージなので問題なし、正常に接続できている。$ ssh -l git -i ~/.ssh/id_rsa github.com The authenticity of host 'github.com (192.30.255.113)' can't be established. RSA key fingerprint is **********. RSA key fingerprint is **********. Are you sure you want to continue connecting (yes/no)? yes # 接続を継続するかの確認(yesを入力) Warning: Permanently added 'github.com,192.30.255.113' (RSA) to the list of known hosts. Enter passphrase for key '/root/.ssh/id_rsa': # 上記、[ ssh-keygen ]で登録したパスワードを入力 PTY allocation request failed on channel 0 Hi ! You've successfully authenticated, but GitHub does not provide shell access. Connection to github.com closed.
GitHubのリポジトリ作成
- id_rsa(秘密鍵)、id_rsa.pub(公開鍵)の生成
home
ディレクトリに.ssh
フォルダを作成後、そのフォルダに移動し、ssh-keygen
を実行する。
(1) GitHubトップの右上「+」をクリックし、New RepositoryリンクからCreate a new repository画面に遷移する。
(2) 画面上部にあるRepository nameに任意のリポジトリ名を入力する。
(3) リポジトリの公開 / 非公開を設定するPublic / Privateラジオボタンを選択する。
(4) (2)、(3) の入力に間違いがないことを確認しCreate repositoryボタンをクリックする。
(5) Quick setup画面の表示後、そのすぐ下にあるSSHボタンをクリックする。
[git clone] : リモートリポジトリの複製
上記で作成したリモートリポジトリをclone(複製)する。
-
Gitの作業フォルダ作成
$ mkdir ~/gitlocalrep $ cd gitlocalrep
-
リモートリポジトリをclone
$ git clone git@github.com:sigma-se/exrep.git # 下記※のパスを入力 Cloning into 'exrep'... Enter passphrase for key '/root/.ssh/id_rsa': # パスフレーズを入力 warning: You appear to have cloned an empty repository. # 空のディレクトリである警告 $ ls # 確認 exrep
※ リモートリポジトリのQuick setup画面のSSHボタン右側にあるURL「git@github.com:<username>/<repositoryname>.git」。
上記の通りclone
によってGitリポジトリがclone
されexrepディレクトリが作成される。
[git branch]:ブランチの作成
-
現在のブランチ確認
アスタリスク(*)があるブランチが現在の作業ブランチとなる。
※ 今回は、cloneしただけなのでmastarブランチのみ。$ cd ~/gitlocalrep/exrep # cloneしたディレクトリに移動 $ git branch # ブランチの確認 * master
-
topicbranchブランチの作成
git branch
と一緒に名前を指定することで、新規にブランチが作成される。
$ git branch topicbranch #「topicbranch」ブランチを作成 $ git branch # ブランチの確認 * master topicbranch
-
topicbranchブランチに切り替え
$ git checkout topicbranch Switched to branch 'topicbranch' $ git branch master * topicbranch
-
(補足)ブランチ作成と切り替えを同時に実行
上記のgit branch topicbranch
とgit checkout topicbranch
は、git checkout -b
で一度で実行することができる。$ git checkout -b topicbranch Switched to branch 'topicbranch' $ git branch master * topicbranch
<
以上で開発準備完了。
以降は、ローカルリポジトリ(ブランチ)からリモートリポジトリに対して、pull、commit, push等の操作を行いバージョン管理する流れとなる。
参考 : Git - 状態管理の概念と基本操作 : status, add, commit, diff, reset, push, pull,
checkout