Edited at

GitHubでチーム開発

More than 1 year has passed since last update.

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

git, GitHubについてはこちら

git - 簡単ガイド 猫でもわかるGit 最初の一歩

GitHub 機能


個々の作業

①イシュー(課題や問題点を番号として起こしたもの)をもとにコーディング

②テスト

③リモートリポジトリにプッシュ(SVNではコミット)

④プルリクエスト(イシューを解決してリポジトリにファイルをコミットしたから見てください!という状態にする)

この①〜④の作業のうち①と④をGitHub上で行います。

①イシュー

これをもとにそれぞれがコーディングを行う。

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3232323236372f61636335306139352d316563312d373564332d333338352d3565323038636363666337392e706e67.jpg

④プルリクエスト

どのブランチへ自身の作業を取り込んで欲しいかを設定する。

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3232323236372f63313637303733622d323864632d623234632d666231652d3161646631323638316662362e706e67.jpg


チーム作業

①進捗報告

②プルリクエストチェック

③コードレビュー

④マージとクローズ または イシュー

⑤新たなイシューを挙げる

このうち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

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

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3232323236372f30363636326439632d653161322d636261642d633838312d3864653932633538313138372e706e67.jpg

イシューの対応がマージされ、クローズした状態

スクリーンショット 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上で一元的に行うことができ、

素晴らしいツールだと再度実感しました。

非公開にするには有料になってしまうので、現場で採用されることはあまりないのかもしれませんが。