web-dev-qa-db-ja.com

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

はい。ブランチ(workingなど)にいて、別のブランチ(masterなど)からの変更をマージする場合、workingブランチでコマンドgit-merge masterを実行すると、変更は履歴のリベースなしでマージされますまったく。 git-rebase masterを実行すると、masterの変更がリベースされ、workingブランチの先頭に配置されます。しかし、masterからの変更をマージしたいが、workingの変更をリベースしてトップにしたい場合はどうすればよいですか?それ、どうやったら出来るの?できますか?

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

125

rebaseが逆方向に行うことを手に入れました。 git rebase masterはあなたが求めていることをします—現在のブランチでの変更を(マスターからの相違のため)取り、masterの上でそれらをリプレイし、そして現在のブランチのヘッドをその新しい履歴のヘッドに設定します。 It does n't現在のブランチの上のmasterからの変更をリプレイします。

226
hobbs

別の見方をすると、git rebase masterを次のように考えることができます。

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

ここで、「master」はupstreamブランチであり、リベース中に ourstheirsが逆になる の理由を説明しています。

58
VonC