web-dev-qa-db-ja.com

Gitflow:リリースブランチからマスターにマージするときにコミットをスカッシュする必要がありますか?

私は自分のリリースブランチをマスターにマージします。マスターにマージするときに、コミットを開発から単一のマージコミットに圧縮する必要があるかどうか疑問に思っています。

Gitフローに関する一般的なドキュメントには、アトラシアンのページにある次のような図が含まれています。

enter image description here

これらの図では、開発のために作成されたすべてのコミットではなく、単一のコミットのみがマスターに表示されます。

実は、コミットのみをリリースするmasterブランチを用意するのが好きです。

マスターにマージするときに、開発時にすべてのコミットを保持する必要がありますか?または、Gitflowをフォローしているときに、マスターにマージする前にコミットをスカッシュしますか?

ソース記事へのリンク: Gitflowワークフロー-アトラシアン

29
Rika

Masterブランチはリリースの記録を維持するために使用されるため、各コミットは、リリースビルドを構成する開発ブランチからの変更のつぶされたセットを表す必要があります。

コミットを押しつぶすと、リリースに加えられた変更を簡単に確認でき、必要に応じてリリースコミットからホットフィックスブランチを作成できます。スカッシュされた各コミットにリリースバージョン番号のタグを付けます。

20
Glen Thomas

私の意見では、心に留めておいてください。これは単なる意見であり、おそらく異なる答えを得るでしょう。developブランチからmasterにマージするときにコミットを押しつぶすべきではありません。これを行うと、行われた変更の履歴の多くが失われます。たとえば、私が行うほぼすべてのコミットには問題番号がタグ付けされているため、gitの履歴を介して、発生した問題と変更が加えられた理由まで完全に追跡できます。

さらに言えば、開発からマスターに直接マージするべきではありません。あなたがgit-flowに従っていると仮定すると、この移行はリリースブランチを通じて行われるはずです。

機能または修正プログラムのブランチで、コミットを押しつぶすかどうかを尋ねた場合、それは別の答えになります。これらの場合、おそらくブランチは1つのコミットのみを保証するのに十分なほど小さくなければならないので、これらの状況では、ほとんどの場合、ターゲットブランチにマージする前に、コミットを1つにリベースしてスカッシュします。

12
Gary Ewan Park