GitHubでPull Requestを使わないのはもったいないと思ったので簡単な使い方をメモしておく

f:id:komeiy:20150107164959j:plain

GitHubでチーム開発なんて考えだすと、commitやpushだけではレビューをする時にもどかしさを感じることがあるかと思います。

GitHubやGitコマンドは使ったことあるけど、Pull Requestは使ったことない。という人向けに簡単に使い方をメモしておきます。

GitHubの基本的な使い方から学びたい場合は以下をどうぞ

githubことはじめ<複数ユーザでpushするまでの初期設定> - ぽぽぽぽーんのネットワークとOSS

GitHub Flowとは?

GitHub Flowは定期的にプロダクション環境へのデプロイを毎日行う際に有効です。以下、公式からの抜粋です。

  • masterブランチのものは何であれデプロイ可能である
  • 新しい何かに取り組む際は、説明的な名前のブランチをmasterから作成する(例:new-oauth2-scopes)
  • 作成したブランチにローカルでコミットし、サーバー上の同じ名前のブランチにも定期的に作業内容をpushする
  • フィードバックや助言が欲しい時、ブランチをマージしてもよいと思ったときは、 プルリクエスト を作成する
  • 他の誰かがレビューをして機能にOKを出してくれたら、あなたはコードをmasterへマージすることができる
  • マージをしてmasterへpushしたら、直ちにデプロイをする

上記にあるように、チーム開発においてPull Requestを覚えておく必要があります。

具体的にPull Requestまでの流れを説明する前に全体像を書いておきます。

f:id:komeiy:20150110190307j:plain

masterブランチはチームで管理するもので、Pull Requestをベースに機能実装されていきます。ブランチは機能実装のたびに作成され、複数同時に立ち上がるのでもう少し複雑になります。ただ、一度覚えておけば多少複雑になっても応用が利きますのでシンプルに手順を確認します。

1. ブランチを作成する

GitHub Flowにあるように、新機能実装など新しい何かに取り組む際は説明的な名前のブランチをmasterから作成します。

新しくわかりやすい名前のブランチを作成します。

[komei@localhost aaa]$ git branch -a
  development
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/upstream/master
  remotes/upstream/update-aaa
[komei@localhost aaa]$ git checkout -b update-bbb
Switched to a new branch 'update-bbb'
[komei@localhost aaa]$
[komei@localhost aaa]$ git branch -a
* update-bbb
  development
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master
  remotes/upstream/master
  remotes/upstream/update-aaa

自分が作業していることをチームメンバーに知らせるために、空のコミット(--allow-emptyオプション)をしておきます。このようにGitHub Flowでは定期的にPushすることを推奨します。

[komei@localhost aaa]$ git commit --allow-empty -m "empty for pull-req"

2. Pull Requestを使ってみる

Pull Requestを実施するタイミングは2つです。

  1. ブランチで更新した内容をmasterに反映させたい時
  2. ブランチで更新している内容についてレビューを求めたい時

2は[WIP]と記載し作成中だとわかるようにした上でレビューを求めます。 1のようにmasterに反映させたい場合がスタンダードなPull Requestかと思いますので、ここでは1のケースを題材に説明します。

実は手順は非常に簡単です。

  1. commit
  2. push
  3. compare & merge

ローカルブランチでcommitする

通常通りローカルブランチでcommitします。

[komei@localhost aaa]$ git commit -m "add ccc"

リモートブランチへpushする

先ほどのローカルブランチでコミットした内容を、リモートブランチへpushします。同様にupdate-bbbという名前でpushします。

[komei@localhost aaa]$ git push origin update-bbb

GitHub上でcompare & mergeをする

ここではgitコマンドではなく、ブラウザでgithub.comにアクセスして作業をします。hubコマンドを使用することも可能ですが、compareはブラウザで見た方が個人的には分かり易いので、この方法を使用します。

f:id:komeiy:20150110190248j:plain

以上で完了です。masterブランチに更新が反映されていると思います。


シェアして頂けると嬉しいです。
参考になったという方がいれば是非お願いしますm(_ _ )m
モチベーション維持の観点で非常に励みになります。

このエントリーをはてなブックマークに追加

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

GitHub実践入門 ~Pull Requestによる開発の変革 (WEB+DB PRESS plus)

開発ツール徹底攻略 (WEB+DB PRESS plus)

開発ツール徹底攻略 (WEB+DB PRESS plus)