1. ホーム
  2. git

[解決済み] developブランチでgit pull origin masterを行うとどうなりますか?

2022-03-05 21:05:30

質問

例えば、develop というプライベートなトピックブランチがあり、master よりも 2 コミット進んでいるとします。

はどのようなものですか? git pull origin master を行う。

リモートマスターからローカルデベロッパーにすべてを引き込み、マージしますか? ローカルのmasterブランチにあるものを全部ひっぱってきて、それをマージしますか?

また、開発からマスターをアップデートする際に git checkout master を先に入力するのですか?

解決方法は?

git pull origin master は、origin というリモートのブランチから master ブランチを現在のブランチにプルします。 現在のブランチにのみ影響し、ローカルのマスターブランチには影響しません。

このような履歴が表示されます。

- x - x - x - x (develop)
   \         /
    x - x - x (origin/master)

これにはローカルのmasterブランチは関係ありません。 git pull は、基本的に git fetchgit merge リモートブランチを取得し、それを現在のブランチにマージします。これは通常のマージと同じで、魔法のようなことは何もしません。

ローカルのmasterブランチを更新したい場合は、それを確認する以外にありません。チェックアウトされていないブランチにマージすることは不可能です。なぜなら、Git はマージを実行するためにワークツリーを必要とするからです。(特に、マージの衝突を報告し、それを解決するために絶対に必要です)。

たまたま master にプルすると早送りになることがわかっている場合 (つまり、自分のローカル master ブランチに origin の master にないコミットがない場合) は、回避することができます。 この回答で説明されているように .