マージされる変更に加えて、現在のブランチの変更をどのようにリベースしますか?


144

はい。私がブランチにいて(たとえばworking)、別のブランチからの変更をマージしたい(たとえばmaster)場合git-merge masterworkingブランチ上でコマンドを実行すると、履歴をまったくリベースせずに変更がマージされます。を実行するgit-rebase masterと、の変更masterがリベースされ、workingブランチの一番上に配置されます。しかし、変更をマージし、変更を最上位にmasterリベースしたい場合はどうなりworkingますか?それ、どうやったら出来るの?できますか?

git-rebase working自分のmasterブランチで実行して自分の変更をmasterブランチの一番上に置くことはできましたが、自分のworkingブランチでそれを実行できるようにしたいのですが、どうすればよいかわかりません。私が考えることができる最も近いのは、新しいブランチを作成し、その上に変更をmasterリベースするworkingことですが、workingブランチを変更する代わりに新しいブランチを使用します。

回答:


255

あなたrebaseは逆方向に何をするかを持っています。git rebase masterあなたが求めていることを行います—現在のブランチの変更を(マスターからの分岐から)取り、それらをの上で再生しmaster、現在のブランチのヘッドをその新しい履歴のヘッドに設定します。それはしませんから、変更を再生master現在のブランチの上に。


3
@ジョナサンそれはクールだ。これは少しトリッキーなトピックです。ところで、git rebase working移動するmasterのを変更(ことをポイントした後workingの一番上になるように分岐)working支店-しかし、それはに行うには非常に賢明なことではないmaster:)
ホッブズ

66

それを見る別の方法は次のように考えることですgit rebase master

現在のブランチを上にリベース master

ここでは、「master」である上流の枝は、それが理由を説明、リベースの間に、oursそしてtheirs逆になっています


これは、LOCALとREMOTEが逆になる理由も説明します。ありがとう。
AVIDeveloper 2015

ローカルおよびリモートの@ AVIDeveloper、stackoverflow.com
a / 3052118/6309

5
@@ VonC:ありがとう。うん、午後に「REMOTEは私のブランチです。LOCALは私のブランチではない」とつぶやいた後、すべて沈みました。正直なところ、REMOTE / LOCAL /の代わりにブランチ名(または略称SHA)を表示したいと思いました。私たち/彼ら/私。私の考えは、git difftool恐ろしい左/右に関して同じです。difftoolちょっとトピックは外れていますが、私はgit-meldに固執し、「working-dir」、「stash @ {0}」などの名前を楽しんでいます。
AVIDeveloper 2015

1
@VonC:どうしたらいいのか説明してもらえますか: git checkout branch_to_update git rebase masterローカルブランチの上にマスターのコミットをGitログに記録しますが、その逆ではありませんか?
JavaSa 2018

1
@JavaSaリベースが適切に完了しなかった場合を除き、これは奇妙なことですか?詳細が記載された別の質問をする必要があるかもしれません。
VonC
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.