Git
GitHub
開発環境
チーム開発
初心者向け

世間はもうSVNからGitに移行しているのにいつまでもSVNしかわからないわけにはいかない(SIはいまだにSVNがほとんどですが)と、Git, GitHub初心者5人でアプリ開発を行なったのですが色々忘れてしまっているのを思い出すために当時のワークフローを書き出します。

git, GitHubについてはこちら
git - 簡単ガイド 猫でもわかるGit 最初の一歩
GitHub 機能

個々の作業

①イシュー(課題や問題点を番号として起こしたもの)をもとにコーディング
②テスト
③リモートリポジトリにプッシュ(SVNではコミット)
④プルリクエスト(イシューを解決してリポジトリにファイルをコミットしたから見てください!という状態にする)
この①〜④の作業のうち①と④をGitHub上で行います。

①イシュー
これをもとにそれぞれがコーディングを行う。
スクリーンショット 2018-05-12 23.21.37.png

④プルリクエスト
どのブランチへ自身の作業を取り込んで欲しいかを設定する。
スクリーンショット 2018-05-12 23.41.52.png

チーム作業

①進捗報告
②プルリクエストチェック
③コードレビュー
④マージとクローズ または イシュー
⑤新たなイシューを挙げる

このうちGitHubでは②と④と⑤を行う。③のコードレビューはGitHubを見ながら行う。

②プルリクエストチェック
#3というイシューに対して#4という対応がされ、プルリクエストされている状態
refs__3_by_xkkx_·_Pull_Request__4_·_xkkx_test.jpg

③コードレビュー
きれいなdiffが表示されるのでレビューアはここでコードレビューを行う。
refs__3_by_xkkx_·_Pull_Request__4_·_xkkx_test.jpg

④マージ、クローズまたはイシュー。(マージする場合はプルリクエストされたブランチへ(基本的には)自動でマージされます。ここで新たな問題などが発生したら再度イシューを作成する。
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3232323236372f62313161613732392d336434312d316663662d656264382d3261336636316432616532652e706e67.png

イシューの対応がマージされ、クローズした状態
スクリーンショット 2018-05-13 14.03.43.png

便利な機能

コンフリクト時にGitHub内で手動マージができます。

コンフリクトが発生している状態。

This branch has conflicts that must be resolved(このブランチは解決しなくてならない競合があります)

スクリーンショット 2018-05-13 14.25.49.png

マージエディタ ここでコードの取捨選択を行う。
Resolve_Conflicts_·_Pull_Request__6_·_xkkx_test.jpg

異なる作業ブランチのマージが完了したらdevelopブランチへpushして作業完了となります。
Delete branchをクリックすればその作業ブランチを削除して、プルリクエストをクローズできます。

Pull request successfully merged and closed(プルリクエストが正常にマージされてクローズしました)

文字列を定数化、Javadocを追加_by_xkkx_·_Pull_Request__6_·_xkkx_test.jpg

振り返ってみて

レビュー依頼、コードレビュー、マージ、ブランチ管理がGitHub上で一元的に行うことができ、
素晴らしいツールだと再度実感しました。
非公開にするには有料になってしまうので、現場で採用されることはあまりないのかもしれませんが。