rebase --interactive
プロダクションの上にデザイン ブランチを作成する必要があります。
- 本番環境で必要なものから始めて、コミットを並べ替えることができます
- 次に、組み込みたいデザインの最後のコミットにプロダクションをマージできます(早送り)
-x--x--x1--x--x2 (デザイン)
\
p--p (生産)
x1 と x2 を本番環境に含める必要がある場合:
git checkout design
git rebase --interactive production
-x
\
p--p (production)
\
x1'-x2'--x'--x' (design)
それで:
git checkout production
git merge x2'
-x
\
p--p--x1'--x2' (production)
\
x'--x' (design)
これにより、次のことが可能になります。
- 本番コミットに対して現在の設計コミットを検証する (リベース中)
- デザインコミットを並べ替える
- 最初のものを本番環境に含める
- 設計から生産への後続のマージを早送りにすることができます。
ラクシュマン・プラサードは次のように付け加えています。
ほとんどの場合、1 日の終わりに変更をプッシュします。なので、あまり役に立ちません。プッシュされたマスターブランチに対するあなたの答えはどのように変わりますか
私は同じことをしますが、操作のためだけに作成されたプライベート ブランチを使用します。
git checkout master
git checkout -b master-private
-x--x--x1--x--x2 (マスター、マスタープライベート)
\
p--p (生産)
、次にリベース、今回はプライベート ブランチ (つまり、決してプッシュしないブランチ) を使用します。
git rebase --interactive production
-x--x--x1--x--x2 (master)
\
p--p (production)
\
x1'-x2'--x'--x' (master-private)
それで:
git checkout production
git merge x2'
-x--x--x1--x--x2 (master)
\
p--p--x1'--x2' (production)
\
x'--x' (master-private)
master
コミットの並べ替え (より論理的な順序) のメリットはありませんが、少なくともmaster
いつでもプッシュできます。
そしてproduction
、必要なものを正確に含めることができます。
後続のコミットmaster
で同じ問題が発生した場合 (一部は に含める必要がありproduction
、他は後で行う必要があります)、私は次のようにします。
- 削除
master-private
(これらの x' についてはあまり気にしません。マスターからの x のコミットのコピー)
master-private
master の上にブランチを作る
- 大雑把
rebase --interactive
な競合解決戦術で をやり直します (そのmaster-private
ブランチの最初のコミットはブランチに統合する必要があるため、例外ですproduction
)
-x--x--x1--x--x2--x--x3--x (マスター)
\
p--p--x1'--x2'--x3' (生産)
| | \
| | x''--x'' (マスタープライベート)
\
x'..x' (最初のマスタープライベートからの古い x')