WEBアプリ開発記

~備忘録としてね~

GitHubでのIssue管理及びPullRequestの流れ

1.まず、作業するリポジトリGitHub上で開きます。

画面左側の「Issue」ボタンを押します。

f:id:jazzmaster0601:20141208184425p:plain

 

2.画面左上の「New issue」を押します。

f:id:jazzmaster0601:20141208184645p:plain

 

3.タイトルと内容を記入して、「Submit new issue」を押します。

f:id:jazzmaster0601:20141208185122p:plain

 

4.Issue番号が発行されました。これを覚えておきます。後で作成するブランチ名をこのIssue番号にするからです。

f:id:jazzmaster0601:20141208185305p:plain

 

5.eclipseの「Git リポジトリー」タブにて、新規ブランチを作成します。

ブランチ名は何でも良いのですが、慣習的にIsuue番号と同じにしましょう。

※後々ぱっと見で分かりやすいので。

f:id:jazzmaster0601:20141208190023p:plain

f:id:jazzmaster0601:20141208190137p:plain

 

6.新規ブランチとして「#6」というブランチが作成されました。

このブランチを編集していきましょう。

f:id:jazzmaster0601:20141208190420p:plain

 

7.編集が完了したら、コミットしてリモートリポジトリにこのブランチをプッシュします。

この時、コミットコメントに「#6」とIssue番号を書くことを絶対に忘れないでください

このコミットコメントを以て、このコミットとIssueが紐づくわけです。

(自動でブランチ名をコミットコメントに追加するプラグインでもあれば忘れにくくなるでしょう。要調査)

f:id:jazzmaster0601:20141208191319p:plain

f:id:jazzmaster0601:20141208191618p:plain

 

8.以下のような画面が出てきたら、ソース参照から現在のブランチを選択し、「仕様の追加」を押します。「完了」ボタンを押すことで、#6のブランチがリモートリポジトリにプッシュされます。

f:id:jazzmaster0601:20141208192024p:plain

f:id:jazzmaster0601:20141208192030p:plain

f:id:jazzmaster0601:20141208192132p:plain

 

9.GitHubに戻ると、「Compare & pull rquest」というボタンが表示されています。

このボタンから、管理者(※1)に「ちゃんとしたソースだったらmasterブランチ(本番環境)(※2)にマージしてくださいな♪」というお願いを出します。

次の画面でコメントを入力し、「Create pull request」を押します。

f:id:jazzmaster0601:20141208192922p:plain

f:id:jazzmaster0601:20141208193120p:plain

 

10.管理者(※1)でGitHubリポジトリを開くと、Pull requestが届いています。

リンクから変更点なども見れます。実際にローカルに落としたりして動作確認します。

f:id:jazzmaster0601:20141208193439p:plain

f:id:jazzmaster0601:20141208193533p:plain

 

11.ソースの修正に問題がなければ、「Merge pull request」ボタンを押して、#6のブランチをmasterブランチにマージします。

f:id:jazzmaster0601:20141208193936p:plain

 

12.masterブランチにマージされました。pull requestも自動でcloseされました。

f:id:jazzmaster0601:20141208194127p:plain

 

13.Issueは自動でcloseされないようです(※3)。Isuueをcloseしましょう。

リポジトリトップ画面からIsuue -> #6のIsuueを選択し、開きます。

(尚、先ほどのコミットコメントがこのIssueに紐づいていることもこの画面で確認できます)

close用コメントを入力し、closeします。

f:id:jazzmaster0601:20141208194732p:plain

 

14.次に、不要になったブランチも削除します。こちらも自動でremoveされないようです(※4)

リポジトリトップ画面のbranchを押します。

次の画面で、#6のブランチのゴミ箱アイコンを押すことで、このリモートリポジトリから#6のブランチを消すことができます。

f:id:jazzmaster0601:20141208195048p:plain

f:id:jazzmaster0601:20141208195445p:plain

 

15.最後にローカルの開発環境を整理します。リモートの変更をローカルはまだ知りません。以下の画面のようにリモートブランチが残っています。

f:id:jazzmaster0601:20141208195717p:plain

 

16.ローカルの該当リポジトリにて「git remote prune origin」コマンドを実行します。

これで、ローカルにもリモートの変更が同期されます。

f:id:jazzmaster0601:20141208200050p:plain

 

17.残った#6ブランチは名前を変えて、リベースすれば、また次の作業ブランチとして使えます。

f:id:jazzmaster0601:20141208200516p:plain

f:id:jazzmaster0601:20141208200533p:plain

f:id:jazzmaster0601:20141208200725p:plain

 

(※1)管理者って?

→おそらくリポジトリのownerだと思われるが調査不足。複数アカウントで実際にやってみないと分からない。また、ソースレビュアとして複数人をpull requestの受信者(マージ権限者)に設定することができるかも調査不足。

 

(※2) masterブランチにマージするのか?developブランチなど別ブランチではないのか?

GitHubFlowでは、今までのGitFlowのようにいろいろなブランチを作らず、masterと作業用のブランチという2種類のみにすることで、GitFlowを簡略化する目的があるそうです。

 Gitブランチを使いこなすgit-flow/GitHub Flow入門(終):プルリクエスト/レビューを取り込んだ、よりシンプルなGitHub Flowの運用を図解する (1/2) - @IT

 

(※3)Issueの自動closeはできないのか?

調べていたら、コミットコメントでできるかもって感じでした。

できました。

但し、これもコミットに書き忘れると不要Issueが残りまくる可能性もあると思います。

【Github, Gitlab】コミットメッセージにissueクローズを書き忘れたときの対処法 - Qiita

 

(※4)マージした不要ブランチは自動で削除されないのか?

されません。が、上記12の画面(マージ完了画面)で「Delete branch」ってボタンがありました。これを押せばすぐに該当ブランチは消えます。