私が取り組んでいる2つの(プライベート)機能ブランチがあります。
a -- b -- c <-- Master
\ \
\ d -- e <-- Branch1
\
f -- g <-- Branch2
Branch1でBranch2からの変更が必要であることを私が発見した間に、これらの枝で少し作業した後。 Branch2の変更をBranch1にリベースしたいのですが。私は次のようになりたいのですが。
a -- b -- c <-- Master
\
d -- e -- f -- g <-- Branch1
2番目のブランチを最初のにリベースする必要があると確信していますが、正しい構文とどのブランチにすべきかについては完全にはわかりません。チェックアウトしました。
このコマンドは望ましい結果をもたらしますか?
(Branch1)$ git rebase --onto Branch1 Branch2
Branch2に切り替える
git checkout Branch2
Branch2のままで、Branch1の変更の上に現在の(Branch2)の変更を適用します。
git rebase Branch1
これはBranch2で望ましい結果をあなたに残すでしょう:
a -- b -- c <-- Master
\
d -- e <-- Branch1
\
d -- e -- f' -- g' <-- Branch2
Branch1を削除できます
注:Branch1
を使用していた場合は、Git 2.0(2014年第2四半期)では次のように入力できます。
git checkout Branch2
git rebase -
commit 4f40740 by Brian Gesiak modocache
を参照してください。
rebase
:直前のブランチに "-
"を簡略化して許可する
checkout
とmerge
と同じ簡略表記を使用して、現在のブランチをrebase
に命名します。つまり、「-
」は「以前のブランチ」を意味します。
Rebaseを要求したことは知っていますが、代わりにBranch2からBranch1に移動したいコミットをチェリーピックします。そうすれば、どのブランチがmasterから作成されたかを気にする必要がなくなり、マージをより細かく制御できるようになります。
a -- b -- c <-- Master
\ \
\ d -- e -- f -- g <-- Branch1 (Cherry-Pick f & g)
\
f -- g <-- Branch2