概要
リモートリポジトリは GitHub, ローカルリポジトリは Sourcetree を利用して管理することを前提として、hugo で作成した Web サイトをチームで運用することを想定した手順についてまとめる。
前提
[ターミナル] git/GitHub を管理する方法
[SourceTree] git/GitHub を管理する方法
[Docker] Hugo でサイトを構築し、GitHub で公開
全体像
以下の 3 つのブランチを作成したチーム開発フローを説明する
・master ブランチ:master ブランチは本番用ページに公開される。管理者のみが review ブランチを master に反映することを想定
・review ブランチ: 検証用ページに反映される。チームメンバーのマージ先
・feature/hanako ブランチ: レビューアーのブランチ。(レビューアーごとにブランチを作成することを想定)
準備
管理者
ローカルリポジトリ、リモートリポジトリ、リモートリポジトリの紐付け方法はこちらに記載
GitHub で共同編集の設定
GitHub のリポジトリを作成後、チームメンバーに共有する
[Settings] → [Managed Access] → [Invite a collaborator] をクリック
メールアドレスなどを入力して [Select a collaborator above] をクリック
招待された人はメールに記載されている [View invitation] をクリック
[Setting] → [Managed Access] をクリックすると、招待したメンバーの一覧が表示される。
review ブランチの作成
今回は、最終的に master ブランチにマージするのは管理者一人を想定しているため、レビュー依頼者が最終的にマージする review ブランチを作成する。
[新規ブランチ:] に 「review」 と入力し、[ブランチを作成] をクリック
review ブランチが作成できたことを確認して、[プッシュ] をクリック
リモートリポジトリの reviwe ブランチ(hugo-test/review)が作成された
メンバーの準備
クローン(初回のみ)
GitHub に公開されているリポジトリをローカルに複製する。
Sourcetree を起動し、[新規] → [URL からクローン] をクリック
フェッチ
レビュー
レビュー依頼者
レビュー用の自分のブランチを作成
[ブランチ]をクリックして、[新規ブランチ:]に「feature/hanako」と入力する
ファイルの更新
ローカルで、ファイルを更新すると、[ファイルステータス] に更新通知がでる
[ファイルステータス]をクリックして、[作業ツリーのファイル]から更新を記録したいファイルを選択
コミット、プッシュ
選択したファイルが [index にステージしたファイル] に移動していることを確認したら、コミットメッセージを入力し、[コミット] をクリック
コミットが完了したら、[プッシュ] をクリックして、プッシュ先のリポジトリで作成した「feature/hanako」を選択し、[OK]をクリック
プル リクエスト
GitHub にアクセスすると、ハイライトされているところに[Compare & pull request]ボタンがあるので、クリック
[base:master] を [base:review] に変更して、[Create pull request] をクリック
(参考) コンフリクト
複数人でファイルの変更を行う場合に、コンフリクト(競合)してしまうことがある。
例えば、hanakoさんが更新作業中に、taroさんが更新を完了して review ブランチにマージしていた場合
この場合、hanako さんが GitHub で feature/hanako を review ブランチにマージしようとすると、[Can't automatically merge.] というメッセージが表示される
このままでは、マージできないので、taro さんの更新分が反映された review ブランチをプルしてファイルを最新状態にする。その後、taro さんの更新分と自分の更新分を調整してマージする。以下に手順を示す
コンフリクトの解消手順
Sourcetree を開き [フェッチ] をクリックし、最新の状態に更新する
review にここでは、「3↓」と表示されている
[現在のツリーにマージするコミットを選択してください] で taro の変更が反映されている review ブランチを選択し、[OK] をクリック
以下のようなメッセージが表示されるので、[OK] をクリック
コンフリクトしているアイテムにビックリマークがついているので、ダブルクリックしてエディターで編集する
taro の変更と自分の変更がハイライトされているので、文章を調整して上書き保存
[ファイルステータス] でファイルをステージングすると自動的にコミットメッセージが表示される
[コミット] → [プッシュ] をクリックし、GitHub で確認すると、[Able to merge.]と表示され、マージできるようになった。[Create pull request] をクリック
マージメッセージを必要に応じて入力して、[Confirm merge] をクリックすれば、コンフリクトが解消される
レビュー依頼
プルリクページのリンクをレビューアーに共有し、コメントをもらう
レビューアーのコメントが完了後、コメントをもとに修正した場合は「### ファイルの更新
」の手順を繰り返す
マージ
メンバー全員から Approved をもらったら、[Merge pull request] をクリック
レビュー用に作成した個人ブランチを削除
マージが完了したら、作成したブランチはもう使わないので、[Delete branch] をクリック
※ ここで不要なブランチを削除しないと、どんどんいらないブランチがたまっていってしまうので、必ず削除する
Sourcetree の更新
[フェッチ] → [リモートで削除された追跡ブランチは取り除く] を選択して、[OK] をクリック
[グラフ]で feature/hanako
のブランチが review ブランチにくっついたことが確認できる
今回使用したローカルに残っているブランチももう不要なので、 「hanako」 を右クリック → [feature/hanako を削除]
[プル] に更新履歴が溜まっているので、クリックしてローカルリポジトリを最新の状態にする
レビューアーの手順
レビュー
共有されたページを開き、[Pull request] → [Files Changed] をクリック
削除された部分は赤く、追加された部分は緑色にハイライトされている
修正点、コメントがある場合
コメントを残したい行番号の近くをホバーすると、[+] ボタンが出てくる。クリックするとコメントの入力が可能。
コメントにここでは、「##
に変更してください」と入力し、[Start a review] をクリック
全てのコメントが完了したら、[Finish your request] をクリックし、[Comment] にチェックが入っていることを確認して [Submit review] をクリック
修正点、コメントがない場合
[Review Changes] → [Approve] → [Submit review] をクリック
本番環境へ反映
管理者(担当者)が Merge pull request を作成し、 master ブランチを review ブランチに反映する