6/5 リモートを取り込む

NOTE

git switch -c "path"
git pull origin 

このように、「git pull」をするとリモートリポジトリの内容をローカルリポジトリに反映させて、その上でワークツリーにもその変更を一度に反映できていることになります。

ワークツリーにまで一度に変更を反映させたい場合は「git pull」を使って見てください。

pullとfetchとmargeの関係性
pull
リモートの状態をローカルに反映

fetch
リモートの状態をローカルのアップストリームブランチに反映

merge
アップストリームブランチの状態をローカルブランチに反映

pullはfetchとmergeを同時に行っています。
通常pullで問題ないですが、コンフリクト(競合)が発生する際などに順を追って作業したい場合に分割して実行するといいでしょう。

コンフリクトを避けるためには
git pull コマンドは、リモート・リポジトリからコンテンツをフェッチしてダウンロードし、そのコンテンツと一致するようローカル・リポジトリを即時にアップデートするために使用されます

Q

  1. ローカルで編集中だったらどうなるの?

  2. フェッチって何

A;


`git pull origin`を実行すると、リモートリポジトリ(通常はGitHubなど)から最新の変更をローカルリポジトリに取り込みます。この操作には、リモートブランチからのフェッチと、ローカルブランチへのマージが含まれます。

しかし、`git pull`によってローカルの変更が自動的に破棄されるわけではありません。ローカルに変更がある場合、以下のようなシナリオが考えられます:

  1. ローカルの変更がコミットされている場合

    • ローカルの変更がすでにコミットされている場合、`git pull`は通常のフェッチとマージを行います。

    • 競合が発生した場合は、競合を解決する必要があります。

  2. ローカルの変更がコミットされていない場合(ワーキングツリーの変更やステージングエリアの変更)

    • ローカルにコミットされていない変更がある場合、`git pull`を実行しようとすると、変更をローカルに残したまま、フェッチのみが行われ、マージはエラーとなります。

    • このエラーメッセージは、ローカルの変更をコミットするか、スタッシュする必要があることを示しています。

ローカルの変更を失わずに`git pull`を行う手順

これにより、ローカルの変更を保持しながらリモートの最新の変更を取り込むことができます。

A2


Gitのフェッチ(`git fetch`)は、リモートリポジトリから最新の変更を取得する操作ですが、ローカルの作業ディレクトリには適用されません。具体的には、リモートの最新のコミットやブランチの情報をローカルリポジトリにダウンロードするだけで、現在作業しているブランチには変更を加えません。

フェッチを行うことで、リモートリポジトリの最新の状態をローカルで確認することができ、必要に応じてローカルブランチを更新する準備が整います。

フェッチの使用例

フェッチの利点

  • 安全性:フェッチはローカルの作業状態に影響を与えないため、安全にリモートの変更を取得できます。

  • 確認と準備:リモートの変更を確認してから、ローカルブランチに取り込むかどうかを決定できます。

  • 競合の事前確認:リモートの変更とローカルの変更が競合する可能性がある場合、フェッチ後にその競合を事前に確認できます。

`git pull`との違い

`git pull`はフェッチとマージ(もしくはリベース)を一度に行います。つまり、リモートの変更を取得し、それを自動的に現在のブランチに適用します。そのため、フェッチと比べると、ローカルの変更に対して影響を与える可能性があります。

まとめると、フェッチはリモートの最新の状態をローカルに反映させるための安全な方法であり、その後の作業に対する計画を立てやすくします。

この記事が気に入ったらサポートをしてみませんか?