web-dev-qa-db-ja.com

sourcetreeを使用したgit rebase

SourceTree GUIを使用してgit rebaseを実行する方法について混乱していると思います。 「master」と「dev」という2つのブランチがあります。ご覧のとおり、2つの支社は分岐しました。コマンドラインを使用して、「dev」ブランチでリベースを行いたいのですが、これは次のようになります。

git checkout dev
git rebase master

enter image description here

「dev」を右クリックし、「現在の変更をdevにリベースする」を選択するはずです。現在の変更は「マスターでの新しいコミット」を意味すると思います。ただし、このオプションを選択しても効果はありません。正しい手順は何ですか?

52
python152

ただし、このオプションを選択しても効果はありません。

はい、現在の変更は現在のブランチの1つであるため、devです。

devの上にdevをリベースすると、ノーオペレーションを意味します。

git checkout dev
git rebase master

つまり、現在のブランチはdevmasterの上にリベースされます。

そのため、SourceTreeでは、masterを右クリックし(devがチェックアウトされている間)、次を選択する必要があります。

Rebase current changes onto master

ハウ 追加 コメント内

rebase current changes onto [branch]」の現在の命名は誤解を招きます。これを確認してください 改善議論SRCTREE-1578

機能ブランチを開発に失敗させて最新の状態にしようとして困惑していることに気付いた後、「rebase current changes onto $somebranch」というラベルの付いた左ペインのコンテキストメニュー項目が、その名前が示すものとは実際に反対であることに気付きました:
現在のブランチを$ somebranchの状態にリベースします。
つまり、$somebranchを現在のブランチにリベース(またはリベース)します。 (右?)

現在のテキストの前置詞「onto」は誤解を招くものです。文のオブジェクト(私の例では$somebranch)が変更を受け取ることを意味します。
実際、発生するのは反対です。
現在のブランチ名が存在しないため、混乱を招きます。

文の構造を改善し、影響を受けるブランチの名前を含む言い回しを変更すると、明確にするために大きな勝利が得られます。
例えば:

rebase $currentbranch to head of $somebranch
rebase $somebranch onto $currentbranch
76
VonC