何かをする必要がある場合は、rebase
(他の人が示唆しているように)はおそらく何をするのでしょうか。
しかし、何もする必要はありません。
"親ブランチ"のような概念に抱かれている人は、単にgitには存在しません。 My Branch
が作成されたときにあなたがいたブランチの記憶はありません。したがって、コミットトポロジが実際に間違っている場合に限り、何かを行う必要があります。
あなたは
x --- O <--(develop)
始めて、あなたはあなたの物語のブランチを作成し、そしておそらくいくつかの仕事をしたとします。お使いのリリースマネージャが機能ブランチにグループストーリーが分岐することを決めていなかった場合
x --- O <--(develop)
\
A <--(story)
さて、あなたは最終的に戻ってdevelop
からstory
をマージしたいです。しかし、今は機能ブランチを持っていますが、機能ブランチを作成しても、存在するコミットについては何も変更されません。
x --- O <--(develop)(feature)
\
A <--(story)
そして実際に、機能ブランチは、ストーリーの分岐の前に存在していた、とあなたはそれをチェックアウトして使用していた場合でも、あなたの出発点として、あなたがstory
を作成したこと...絵はまったく同じになります。このシナリオでは、実行する必要があるのは、story
分岐が完了したときにdevelop
の代わりにfeature
にマージすることだけです。 (どちらが、--no-ff
を想定し、
x --- O <--(develop)
|
|-- M <--(feature)
\/
A <--(story)
を与え、あなたの "見かけ" の分岐階層を持っています。)
これは、あなたがと決して言わなかったとしても、は何も修正する必要がありません。 story
が作成された場所とfeature
が作成された場所の間にdevelop
のコミットがあった場合は、feature
の指定された分岐点と一貫性を持たせるために、story
を再配置する必要があります。これは、一般的に
rebase --onto feature develop story
のようになります(そして、理想的に、あなたは一人ひとりの書き換え
story
ブランチにコミットを再テストする必要があります。あなたはどちらのビルド/テストツールを自動化している場合は、大したことではないはずです。あなたがそうでない場合、あなたは本当に機敏ではありません...)
そして、先に進みます:feature
が作成されたら、追加のstory
ブランチの開始点として使用することになりますa)feature
に他のものを誤って組み込むのを避けるため、(b)story
を012に結合するときの不要なマージの競合を減らす。
Gitのブランチでは、親子関係はありません。コミットだけに親子関係があります。これらは、コミットを行うと固定されます(コミットは永続的で変更できないため)。 'git rebase'のようなコミットの連鎖を*コピー*してブランチラベルを新しいコピーのほとんどを指すようにすることができます(' git rebase'も同様です)。それはあなたが探しているものかもしれません。 – torek
それを希望のブランチにリベースします。 – EvgenyKolyakov