sourcetreeを使用したgitリベース


83

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

git checkout dev
git rebase master

ここに画像の説明を入力してください

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

回答:


117

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

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

リベースdevの上にdev手段がない-OP。

git checkout dev
git rebase master

つまり、現在のブランチはdev:に基づいてリベースされmasterます。

したがって、SourceTreeで、masterdevチェックアウトされている間)右クリックして、次を選択する必要があります。

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

13
文脈上、反対票は、SourceTreeにまったく対処せずに以前に回答を投稿しデッドマンからのものです。私は自分の批判を否定し、コメントで説明しました。どうやら、デッドマンは私が行った建設的な発言に感謝していませんでした。
vonC 2016年

1
それはマスターブランチを変更しますか?devブランチをmasterブランチの最新の変更で更新し、後でdevブランチをmasterにマージしたいと思います。説明されている方法でこのタスクを実行できますか?
Gerfried 2017年

2
@Gerfried同意しました。開発がプッシュされていない限り、マスターの上にリベースできます。
vonC 2017年

14
Sourcetreeは、わかりやすくするために、文言を「マスターから開発への最新の変更をリベースする」に変更する必要があります。
ティモ

3
「現在の変更を[ブランチ]にリベースする」という現在の命名は誤解を招く恐れがあります。この改善に関するディスカッションを確認してください:jira.atlassian.com/browse/SRCTREE-1578
ZihaoZhao18年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.