web-dev-qa-db-ja.com

機能ブランチを別の機能ブランチに再配置する

私が取り組んでいる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
254
Arjen
  1. Branch2に切り替える

    git checkout Branch2
    
  2. Branch2のままで、Branch1の変更の上に現在の(Branch2)の変更を適用します。

    git rebase Branch1
    

これはBranch2で望ましい結果をあなたに残すでしょう:

a -- b -- c                      <-- Master
           \
            d -- e               <-- Branch1
           \
            d -- e -- f' -- g'   <-- Branch2

Branch1を削除できます

288
sasikt

注:Branch1を使用していた場合は、Git 2.0(2014年第2四半期)では次のように入力できます。

git checkout Branch2
git rebase -

commit 4f40740 by Brian Gesiak modocache を参照してください。

rebase:直前のブランチに "-"を簡略化して許可する

checkoutmergeと同じ簡略表記を使用して、現在のブランチをrebaseに命名します。つまり、「-」は「以前のブランチ」を意味します。

47
VonC

Rebaseを要求したことは知っていますが、代わりにBranch2からBranch1に移動したいコミットをチェリーピックします。そうすれば、どのブランチがmasterから作成されたかを気にする必要がなくなり、マージをより細かく制御できるようになります。

a -- b -- c                  <-- Master
     \     \
      \     d -- e -- f -- g <-- Branch1 (Cherry-Pick f & g)
       \
        f -- g               <-- Branch2
1
Craigo