5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[GitHub] チーム開発を行う際のブランチ、プルリク、マージ、コンフリクトのステップまとめ

Last updated at Posted at 2020-10-16

概要

リモートリポジトリは GitHub, ローカルリポジトリは Sourcetree を利用して管理することを前提として、hugo で作成した Web サイトをチームで運用することを想定した手順についてまとめる。

前提

[ターミナル] git/GitHub を管理する方法
[SourceTree] git/GitHub を管理する方法
[Docker] Hugo でサイトを構築し、GitHub で公開

全体像

以下の 3 つのブランチを作成したチーム開発フローを説明する
・master ブランチ:master ブランチは本番用ページに公開される。管理者のみが review ブランチを master に反映することを想定
・review ブランチ: 検証用ページに反映される。チームメンバーのマージ先
・feature/hanako ブランチ: レビューアーのブランチ。(レビューアーごとにブランチを作成することを想定)
スクリーンショット 2020-10-15 17.13.59.png

準備

管理者とチームメンバーの準備フローについて以下に示す
スクリーンショット 2020-10-19 23.25.02.png

管理者

ローカルリポジトリ、リモートリポジトリ、リモートリポジトリの紐付け方法はこちらに記載

GitHub で共同編集の設定

GitHub のリポジトリを作成後、チームメンバーに共有する
[Settings] → [Managed Access] → [Invite a collaborator] をクリック
スクリーンショット_2020-10-13_9_34_48.png

メールアドレスなどを入力して [Select a collaborator above] をクリック
スクリーンショット_2020-10-13_9_36_29.png

招待された人はメールに記載されている [View invitation] をクリック
スクリーンショット_2020-10-13_9_37_27.png

[Setting] → [Managed Access] をクリックすると、招待したメンバーの一覧が表示される。
スクリーンショット_2020-10-13_17_15_35.png

review ブランチの作成

今回は、最終的に master ブランチにマージするのは管理者一人を想定しているため、レビュー依頼者が最終的にマージする review ブランチを作成する。

[ブランチ] をクリック
スクリーンショット_2020-10-13_19_37_15.png

[新規ブランチ:] に 「review」 と入力し、[ブランチを作成] をクリック
スクリーンショット_2020-10-13_17_22_54.png

review ブランチが作成できたことを確認して、[プッシュ] をクリック
スクリーンショット_2020-10-13_19_40_58.png
リモートリポジトリの reviwe ブランチ(hugo-test/review)が作成された

メンバーの準備

クローン(初回のみ)

GitHub に公開されているリポジトリをローカルに複製する。
Sourcetree を起動し、[新規] → [URL からクローン] をクリック
スクリーンショット_2020-10-13_11_20_38.png

フェッチ

最新の状態に更新する
スクリーンショット_2020-10-13_20_01_24.png

レビュー

レビューのフローは以下の通り
スクリーンショット 2020-10-19 23.25.30.png

レビュー依頼者

レビュー用の自分のブランチを作成

[ブランチ]をクリックして、[新規ブランチ:]に「feature/hanako」と入力する
スクリーンショット_2020-10-13_20_06_08.png

ファイルの更新

ローカルで、ファイルを更新すると、[ファイルステータス] に更新通知がでる
スクリーンショット_2020-10-13_20_10_51.png

[ファイルステータス]をクリックして、[作業ツリーのファイル]から更新を記録したいファイルを選択
スクリーンショット_2020-10-13_20_14_28.png

コミット、プッシュ

選択したファイルが [index にステージしたファイル] に移動していることを確認したら、コミットメッセージを入力し、[コミット] をクリック
スクリーンショット_2020-10-13_20_15_26.png

コミットが完了したら、[プッシュ] をクリックして、プッシュ先のリポジトリで作成した「feature/hanako」を選択し、[OK]をクリック
スクリーンショット_2020-10-13_20_21_11.png

プル リクエスト

GitHub にアクセスすると、ハイライトされているところに[Compare & pull request]ボタンがあるので、クリック
スクリーンショット_2020-10-13_20_25_03.png

[base:master] を [base:review] に変更して、[Create pull request] をクリック
スクリーンショット_2020-10-13_21_17_54.png

プル リクエストが作成され、ページが表示される
スクリーンショット_2020-10-13_21_18_50.png

(参考) コンフリクト

複数人でファイルの変更を行う場合に、コンフリクト(競合)してしまうことがある。
例えば、hanakoさんが更新作業中に、taroさんが更新を完了して review ブランチにマージしていた場合
スクリーンショット 2020-10-16 11.04.24.png

この場合、hanako さんが GitHub で feature/hanako を review ブランチにマージしようとすると、[Can't automatically merge.] というメッセージが表示される
スクリーンショット_2020-10-16_23_42_56.png

このままでは、マージできないので、taro さんの更新分が反映された review ブランチをプルしてファイルを最新状態にする。その後、taro さんの更新分と自分の更新分を調整してマージする。以下に手順を示す

コンフリクトの解消手順

Sourcetree を開き [フェッチ] をクリックし、最新の状態に更新する
スクリーンショット_2020-10-16_23_45_25.png
review にここでは、「3↓」と表示されている

review ブランチに移動して [プル] をクリック
スクリーンショット_2020-10-16_23_48_46.png

自分のブランチに移動し、[マージ] をクリック
スクリーンショット_2020-10-16_23_49_24.png

[現在のツリーにマージするコミットを選択してください] で taro の変更が反映されている review ブランチを選択し、[OK] をクリック
スクリーンショット_2020-10-16_23_50_22.png

以下のようなメッセージが表示されるので、[OK] をクリック
スクリーンショット_2020-10-16_23_50_36.png

コンフリクトしているアイテムにビックリマークがついているので、ダブルクリックしてエディターで編集する
スクリーンショット_2020-10-16_23_50_54.png

taro の変更と自分の変更がハイライトされているので、文章を調整して上書き保存
スクリーンショット_2020-10-16_23_51_24.png

[ファイルステータス] でファイルをステージングすると自動的にコミットメッセージが表示される
スクリーンショット_2020-10-16_23_52_03.png

[コミット] → [プッシュ] をクリックし、GitHub で確認すると、[Able to merge.]と表示され、マージできるようになった。[Create pull request] をクリック
スクリーンショット_2020-10-16_23_53_32.png

マージメッセージを必要に応じて入力して、[Confirm merge] をクリックすれば、コンフリクトが解消される

レビュー依頼

プルリクページのリンクをレビューアーに共有し、コメントをもらう
スクリーンショット_2020-10-13_21_41_46.png

レビューアーのコメントが完了後、コメントをもとに修正した場合は「### ファイルの更新」の手順を繰り返す

マージ

メンバー全員から Approved をもらったら、[Merge pull request] をクリック
スクリーンショット_2020-10-16_22_58_20.png

コメントを残して、[Confirm Merge]をクリック
スクリーンショット_2020-10-13_21_43_55.png

レビュー用に作成した個人ブランチを削除

マージが完了したら、作成したブランチはもう使わないので、[Delete branch] をクリック
スクリーンショット_2020-10-13_21_44_17.png
※ ここで不要なブランチを削除しないと、どんどんいらないブランチがたまっていってしまうので、必ず削除する

Sourcetree の更新

[フェッチ] → [リモートで削除された追跡ブランチは取り除く] を選択して、[OK] をクリック
スクリーンショット_2020-10-13_21_47_24.png

[グラフ]で feature/hanako のブランチが review ブランチにくっついたことが確認できる
スクリーンショット_2020-10-13_21_48_38.png

今回使用したローカルに残っているブランチももう不要なので、 「hanako」 を右クリック → [feature/hanako を削除]
スクリーンショット_2020-10-13_21_49_19.png

[プル] に更新履歴が溜まっているので、クリックしてローカルリポジトリを最新の状態にする
スクリーンショット 2020-10-13 21.56.50.png

レビューアーの手順

レビュー

共有されたページを開き、[Pull request] → [Files Changed] をクリック
削除された部分は赤く、追加された部分は緑色にハイライトされている
スクリーンショット_2020-10-13_21_25_01.png

修正点、コメントがある場合

コメントを残したい行番号の近くをホバーすると、[+] ボタンが出てくる。クリックするとコメントの入力が可能。
コメントにここでは、「## に変更してください」と入力し、[Start a review] をクリック
スクリーンショット_2020-10-13_21_25_59.png

全てのコメントが完了したら、[Finish your request] をクリックし、[Comment] にチェックが入っていることを確認して [Submit review] をクリック
スクリーンショット_2020-10-13_21_27_09.png

修正点、コメントがない場合

[Review Changes] → [Approve] → [Submit review] をクリック
スクリーンショット_2020-10-16_22_57_01.png

本番環境へ反映

管理者(担当者)が Merge pull request を作成し、 master ブランチを review ブランチに反映する
スクリーンショット 2020-10-19 23.25.41.png

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?