Git Merge Origin/Master と Git Pull の違い

John Wachira 2024年2月15日
Git Merge Origin/Master と Git Pull の違い

この記事では、git merge origin/master コマンドと git pull コマンドの違いについて概説します。 2つのコマンドは、リモート リポジトリからの変更を現在のローカル ブランチに統合します。

ただし、後で説明するように、各コマンドは独自に動作し、さまざまなユース ケースがあります。 これは、Git を初めて使用し、2つのコマンドに苦労している場合に適した場所です。

git merge origin/mastergit pull の違い

まず、各コマンドを分析して重要な違いを導き出します。 git pull コマンドから始めましょう。

git pull コマンド

Git のドキュメントによると、デフォルトでは、git pull コマンドは 2つのコマンドの組み合わせです。

  1. git fetch コマンド
  2. git merge Fetch_Head コマンド

git push コマンドは、リモート リポジトリから変更をフェッチし、git merge コマンドを呼び出して Fetch_Head をチェックアウトされたローカル ブランチにマージします。

簡単に言えば、Fetch_Head はフェッチされたものを追跡する参照です。 すべてのリモート ブランチの先端にコミットを保存します。

git pull コマンドでは、ローカル ブランチにリモート トラッキング ブランチが必要です。 リモート追跡ブランチは、ローカル ブランチが変更をプルしてプッシュするリモート リポジトリ内のブランチです。

ローカル ブランチ用にリモート トラッキング ブランチを設定していない場合、git pull コマンド自体は失敗します。 このような状況では、リモート ブランチを指定する必要があります。

git merge origin/master コマンド

git merge origin/master は、リモートの master ブランチから現在のブランチに変更を統合します。 git merge origin/master コマンド自体は、ローカル ブランチには影響しません。

ローカル リポジトリはリモート リポジトリの変更を認識しないため、最初に git fetch コマンドを実行する必要があります。

git fetch コマンドと組み合わせると、git merge origin/master コマンドは git pull コマンドのように機能します。 ただし、リモート追跡ブランチは必要ありません。

次の架空のシナリオを考えてみましょう。

私たちのリポジトリには master ブランチがあります。 編集を行う development ブランチを作成し、それらを master にマージして、リモート リポジトリにプッシュします。

同じプロジェクトに取り組んでいる他の開発者は、同じワークフローに従います。

リモートの master ブランチに新しい変更があり、master ブランチを更新せずに直接 development ブランチに変更を加えたいと考えています。 これについてどうすればよいでしょうか?

ローカルの development ブランチにはリモート トラッキング ブランチがないため、git pull コマンドは機能しません。

リモート リポジトリから変更を取得し、直接 development ブランチにマージする必要があります。 ここで、git merge origin/master コマンドの出番です。

リモートから取得するには、次を実行します。

$ git fetch

git fetch

これは変更をダウンロードするだけで、何も更新しないことに注意してください。 変更を development ブランチにマージするには、次を実行します。

$ git merge origin/master

git マージ元マスター

一方、ローカルの master ブランチでチェックアウトした場合、git pull コマンドは機能し、master ブランチを更新します。

ブランチにリモート追跡ブランチがある場合は、git pull コマンドを使用して変更をローカル ブランチに統合します。 一方、git merge origin/master コマンドは、リモートの master ブランチから現在のローカル ブランチへの変更を組み込みます。

コマンドを呼び出す前に、リモート リポジトリから取得する必要があります。

著者: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

関連記事 - Git Merge

関連記事 - Git Pull