1. ホーム
  2. ギット

[解決済み】リモートマスターをローカルブランチにマージする方法

2022-04-02 20:57:58

質問

他の人のプロジェクトからフォークしたプロジェクト ("configUpdate") のローカルブランチがあり、その上で多くの変更を行ったので、彼らが行った変更を私のローカルブランチにマージしたいと思っています。

試してみたところ

git pull --rebase origin configUpdate

しかし、最新の変更を取り込んでいません。どうすればこの2つをマージできるのでしょうか? (また、ボーナスポイントとして、私は pull --rebase コマンドを実行する必要があります)。

解決方法は?

フィーチャーブランチから (例 configUpdate ) を実行します。

git fetch
git rebase origin/master

あるいはもっと短い形。

git pull --rebase


なぜこれが有効なのか

  • git merge branchname ブランチから新しいコミットを取得する branchname そしてそれらを現在のブランチに追加します。 必要であれば、自動的に "Merge" というコミットを先頭に追加します。

  • git rebase branchname ブランチから新しいコミットを取得する branchname そして、それらをあなたの変更の下に挿入します。 より正確には、現在のブランチの履歴が branchname そして、その上にあなたが行ったすべての変更を加える。

  • git pull とは基本的に同じです。 git fetch; git merge origin/master .

  • git pull --rebase とは基本的に同じです。 git fetch; git rebase origin/master .

では、なぜ git pull --rebase よりも git pull ? 以下は簡単な例です。

  • あなたは新しい機能に取り組み始めました。

  • あなたが変更をプッシュする準備ができたころには、他の開発者によっていくつかのコミットがプッシュされています。

  • もし、あなたが git pull (これはマージを使用します)、あなたの変更は、自動的に作成されるマージコミットに加えて、新しいコミットによって埋没されます。

  • もし、あなたが git pull --rebase の代わりに、git はあなたのマスターをアップストリームのマスターに早送りします。 では は、あなたの変更を上に適用します。