Gitでの管理の流れ


 git flow とは

 git flow は、チームで Git を使う際に役立つ、運用ルールをまとめたツールです。Git は分散型バージョン管理システムで、複数名でプロジェクト・ファイルを共有できる特徴があります。開発スピードの向上やミスの低減などメリットがある一方で、開発スタート時に運用ルールを定めておかないと、プロジェクトがまとまらない、というデメリットがあります。そんな Git の課題を git flow は解決してくれます。ちなみに git flow は、2009年にオランダ人ソフトウェア・エンジニアの ヴィンセントさんが発案した Git の運用ルールになります。

 git flow の内容

 master

 本番に反映するファイルで、基本的にこちらにはコミットしません

 develop

 開発を行うブランチになります。この2つの柱(ブランチ)は消滅することなくプロジェクトと共に存続します。

 feature branches

 追加機能などはこちらで作業されます。develop から分岐し、 develop にマージする。

 release branches

 プロダクトリリースの準備。 機能の追加やマイナーなバグフィックスとは独立させることで、 リリース時に含めるコードを綺麗な状態に保つ(機能追加中で未使用のコードなどを含まないようにする)ことができる。 develop ブランチにリリース予定の機能やバグフィックスがほぼ反映した状態で develop から分岐する。 リリース準備が整ったら, master にマージし、タグをつける。次に develop にマージする。

 hotfixes branches

 リリース後のクリティカルなバグフィックスなど、 現在のプロダクトのバージョンに対する変更用。 master から分岐し、 master にマージし、タグをつける。次に develop にマージする。

 開発フローの例

 ローカルリポジトリにクローンを作成する。

 共有リポジトリを利用して開発を進める場合、クローン(clone)して作業ディレクトリをローカルに作成します。このクローンはサーバが保持しているデータをほぼすべてローカルにコピーします。これはプロジェクトのすべてのファイルのすべての履歴が手元にコピーされることを意味しています。

 作業ディレクトリを作成するコマンドは下記を実行します。
 ------※clone以下はGitHubのhttps等のURLを入れて下さい。------

 git clone https://github.com/.git

 そしてクローンしたプロジェクトに移動します。

 cd プロジェクト名

 Git-flowの初期化(developブランチの作成)を行います。

 下記のコマンドを実行すると、ローカルリポジトリの初期化ができます。実行すると、ブランチの名前などを聞かれますが全てEnterで!

 git flow init

 実行後、branchの状態を確認しましょう。

 git branch

 実行結果は下記の様になっています。

 * develop
   master

 リモートブランチにdevelopブランチがないので下記コマンドを実行して下さい。

 git push origin develop

 機能実装を開始する

 Step1  featureブランチを作成

 developブランチからフィーチャーブランチを作成し、機能実装作業を開始します。コミットはフィーチャーブランチに対して行います。

 まず、feature/top を作成します。

 git branch feature/top

 feature/top にブランチを切り替えましょう。

 git checkout feature/top

 上記コマンドで作成されたブランチは、個人のローカル上に作成しています。その為、GitHubには反映されていません。反映させるには、下記コマンドを実行してpushを行う必要があります。

 git push origin feature/top

 Step2 Pullを行う

 作業者は、リモートリポジトリの最新データを使用する必要があります。(コンフリクトが起きるため)下記のコマンドでモートリポジトリの最新データをPullしましょう。

 git pull origin  develop

 Step3 Pushを行う

 ファイルをインデックスに追加する(コミットの対象にする) . にすることで全てのファイルを指定します。test.phpなどとすることで特定のファイルを指定できます。

 git add .

 インデックスに追加した変更をリポジトリに記録する。

 git commit -m "変更点を記入"

 featureブランチにpushします。

 git push origin feature/top

 機能実装を完了する

 featureブランチでの作業が完了したら、featureブランチをdevelopブランチにmergeします。merge完了後にfeatureブランチを削除します。

 Step1 GitHub上で、Pull Requestを作成する

 GitHub上に作成したリポジトリページを開き、Pull requestsボタンを押すと、Pull Request作成ページに移動できます。

 Pull request作成ページでは、リクエストを送信する相手に、どういう変更を加えたのかを説明する内容を記入します。記入できたら、「Create pull request」ボタンを押して、Pull Requestを送信します。

 これでPull Requestが送信されました。送信後のページでは、今作成したPull RequestがOpen状態になって表示されていると思います。

 Step2 GitHub上で、Pull Requestをマージする

 Pull Requestの変更点が問題なければ、「Merge pull request」→「Confirm Merge」ボタンを押すだけです。

 マージが完了した後は、ブランチを削除しましょう。

 参考文献