<aside> 💡 現在主にAltiveで使用しているフローはこちら。
</aside>
https://nvie.com/posts/a-successful-git-branching-model/
A successful Git branching model | nvie.com ****より
-
とするmain
, develop
は常に存在するブランチ、その他はプルリクエストを介したマージが完了したら削除する。(GitHubの設定で自動削除可能)main
, develop
ブランチは直コミット禁止。必ずプルリクエストを介してマージする。プルリクエストのマージは以下2種類のマージを使い分ける。
release
ブランチや hotfix
ブランチは、複数のブランチ( main
, develop
)にマージする必要があり、この時 Squash and merge
を使用してしまうと、同一のコミットとみなされず次回コンフリクトが発生してしまう。必ずこちらのマージ方法を使用すること。
feature
ブランチは、 develop
ブランチ、または feature
ブランチ同士でしかマージしない。
feature
ブランチ内での細かいコミット履歴は不要なことが多く、 Create a merge commit
でマージすると無駄にコミット履歴が嵩むことになる。
そこで Squash and merge
を使用すると、マージがただ1つのコミットで表現される。(=プルリクエスト単位のコミット履歴となる)
main
と develop
や、Tag同士 ( v1.0.0
… v1.1.0
)でコミット差分を見るときも、コミット履歴がプルリクエストタイトルで並んでいて分かりやすい。
リリース単位の開発成果がこのブランチにマージされる。