git で次のブランチ戦略を使用しているとします。
- 新機能の継続的な開発のための
masterブランチ。 release安定させるために次のリリースの前のある時点で作成されるブランチ。
ブランチが作成されるreleaseと、一部の開発者は継続してコミットしmaster(以降のリリースの機能に取り組んでいます)、他の開発者は現在のリリースの完成に取り組んでいます。ブランチが存在する間、リリース ブランチの安定性を維持するために、releaseからのコミットmasterはマージされません。
リリース時に、releaseブランチの最終コミットにリリース バージョンのタグが付けられます。次に、マージが実行さreleaseれますmaster(両方のブランチでの同時開発のため、明らかに早送りではありません)。
ここで、後で (さらにコミットした後master)、リポジトリを最後のリリースの状態にリセットしたいと考えています。
タグ付けされたリリース コミットにロールバックすると、ブランチmasterでの状態とは異なるリポジトリ状態になるのではないでしょうか? release(私が何かを見逃していない限り、タグ付けされたリリースコミットの前に発生したためmaster、両方のブランチがアクティブな開発中であったときのコミットがロールバック後もコミット履歴に残っているため、これが当てはまります。)master
releaseブランチを にマージする代わりにリベースすると、masterこの問題は解決されるようですが、複数の開発者がmaster.
何かご意見は?
編集:@jthillの回答のおかげで、状況と私が混乱した理由を説明する図を追加しました。
実際に起こったことの図は次のとおりです。
...o---X---o---o---o---M master
\ /
a---b---c---R release
^
(v1.0, final commit in release branch)
さて、これは線形コミット履歴がどのように見えるかを示す図です(これは私の誤ったメンタル モデルを駆り立てていました) --コミットのタイムスタンプに基づいて、 ref と/ / ref が混ざり合っているmasterことに注意してください。これが私を悩ませていたものです-フラットなコミット履歴では、 refにロールバックすると、後続のすべてのコミットも削除されることが明確になりません!oabcRoX
...o---X---o---a---b---o---c---o---R---M master
^
(v1.0, final commit in release branch)