git-flow や GitHub Flow を運用しやすいようにアレンジして使っていました
ちょっと前の開発プロジェクトで使っていたGitを使用したワークフローについて書いてみます。
ざっくり言うと、リポジトリを一つしか使用しない git-flow って感じです。もしくはルールを追加した GitHub Flow でしょうか。
以下、箇条書きで書きます。
master, develop, featureブランチを用意します。機能を実装するときは、developerブランチからfeatureブランチ配下に「今日の日付+バックログ項目やタスクのID」という命名でブランチを作成します。
featureブランチは実装中、ある程度のまとまりでサーバーにプッシュします。実装完了後は、サーバー上でプルリクエストを作成してレビューを行い、レビューが完了したらdevelopブランチにマージします。
リリースを行う時は、最新のdevelopブランチから、release作業用ブランチを作成して、リリース準備作業を行ったらmasterブランチ(とdevelopブランチ)にマージし、masterブランチをサーバーにプッシュしてから、masterブランチにてリリースデプロイを行います。
コードレビューは、既に書きましたがfeatureブランチからdeveloperブランチへのマージ時に行います。リリース作業のチェックは、プッシュ後にmasterブランチで確認します。
ツールは、git-flow関連はSourceTreeを使っていて、それ以外は必要に応じてコマンドラインなども使用していました。
プルリクエストを作成するまでは、featureブランチは担当者専用のブランチなので、ローカルのブランチでコミットの順番を入れ替えたり、集約してコミットログを整理した後、サーバーに強制プッシュすることもOKです。
CI/CDを行うとしたら、feature->developへのマージ後や、masterのプッシュ後になると思います。
プロジェクトは変わってしまったのですが、中々良く出来ていると思ったので、覚えている限り書いてみました。