1. ホーム
  2. git

[解決済み] ソースツリーを使った git rebase

2023-01-12 18:47:16

質問

SourceTreeのGUIでgit rebaseを行う方法に迷っているようです。私は2つのブランチ "master" と "dev" を持っています。見ての通り、2つのブランチは分岐しています。コマンドラインを使用して、"dev" ブランチにリベースを行いたいのですが、これは以下のようになります。

git checkout dev
git rebase master

私は "dev" を右クリックして "Rebase current changes onto dev" を選択するものと思っていました。現在の変更とは、"master" 上の新しいコミットという意味だと思います。しかし、このオプションを選んでも何の効果もないようです。正しい手順は何でしょうか?

どのように解決するのですか?

<ブロッククオート

しかし、このオプションを選択しても、何の効果もないようです。

はい、現在の変更は現在のブランチのものであり、それは dev .

リベース dev の上に dev はno-opを意味します。

git checkout dev
git rebase master

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

そこで、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