VS CodeのGit FetchとPullの違いと使い分け

VS CodeのGit FetchとPullの違いと使い分け
  • URLをコピーしました!

VS CodeでGitを使い始めると、画面のあちこちに「Fetch」「Pull」「Sync Changes」といった表示が並んでいます。

私もはじめてこの画面を見たとき、「これを押したら自分のファイルが上書きされるのでは」と少し身構えました。GitHubと連携している場面では、FetchとPullの違いがあいまいなまま操作するのは気持ちが落ち着かないですよね。

この記事では、VS Codeに表示されるGit FetchとPullの違いを、初心者の方が判断しやすいように整理します。

目次

先に結論、Fetchは確認、Pullは取り込み

ざっくり言うと、Fetchは「リモート側の最新情報を見に行く操作」、Pullは「リモート側の変更を自分の作業場所へ取り込む操作」です。

ここでいうリモートとは、GitHubなどインターネット上にある共有先のリポジトリのこと。自分のPC内にある作業場所は、ローカルと呼ばれます。

  • FetchはGitHub側に新しい変更があるか確認する操作
  • PullはGitHub側の変更を自分のローカル環境に取り込む操作

この違いを意識しておくと、VS Codeのボタンを押す前に「今は確認だけしたいのか、取り込みたいのか」を冷静に判断できます。

VS CodeでGit Fetchを実行すると何が起こるか

Git Fetchを押すと、リモートリポジトリの最新情報を取得します。

たとえばチームの誰かがGitHubに新しい変更をpushしていた場合、Fetchによって「リモート側にこの変更があります」という情報をVS CodeやGitが把握できるようになるんですよね。

大事なのは、Fetchだけでは自分の作業ファイルに直接変更が反映されない、という点。

つまりFetchは、いきなりファイルを書き換える操作ではなく、向こう側に何か更新があるかを見に行く操作とイメージするとわかりやすいです。

私自身、Fetchを押してもエディタ内の作業ファイルがそのまま保たれることを知って、ようやく安心してボタンを押せるようになりました。

VS Codeでは、ローカルブランチがリモートブランチとつながっている場合、Fetchの後に取り込める変更(incoming commits)が表示されることがあります。

状況を確かめてから動きたいときは、Pullより先にFetchを使うと落ち着いて判断できますよ。

VS CodeでGit Pullを実行すると何が起こるか

Git Pullは、リモート側の変更を現在のブランチへ取り込む操作です。

Git公式ドキュメントでも、pullはまずfetchを実行し、その後にリモートブランチの変更を現在のブランチへ統合する流れと説明されています。

つまりPullは、ただの確認ではなく「取り込み」まで進む操作なんですよね。

たとえばGitHub上のmainブランチに新しい更新があり、自分のローカルのmainブランチが古い場合、Pullするとその更新がローカルにも反映されます。

ただし、自分のローカルに未コミットの変更が残っていたり、同じファイルの同じ場所を別々に編集していたりすると、コンフリクトが起こることがあります。

コンフリクトとは、Gitがどちらの変更を優先すればよいか判断できない状態のこと。私もはじめてコンフリクトに遭遇したときは画面の表示に戸惑いましたが、内容を落ち着いて読めば、どこで衝突しているかは案外わかりやすく示されています。

迷ったときの使い分け4ステップ

初心者のうちは、次の順番で考えると安全。

STEP
Fetchでリモートの状態を確認する

VS CodeのFetchを押して、GitHub側に新しい変更がないかを取得します。この時点では作業ファイルには手が加わりません。

STEP
Source Controlで状況を見る

VS CodeのSource Controlやブランチ表示で、incoming(取り込める変更)とoutgoing(まだpushしていない変更)の数を確認します。

STEP
自分の変更が残っていないかチェック

未保存・未コミットの変更が残っていないかを必ず確認します。気になる変更があれば先にコミットするか、stashで一時退避しておきましょう。

STEP
問題なさそうならPullで取り込む

状況がはっきりしたら、Pullで変更をローカルへ取り込みます。慌てて押さないだけで、ずいぶん事故は減ります。

Fetchは確認、Pullは取り込み。この分け方を覚えておくだけで、Git操作の不安はかなり減ります。

ひとりで作業しているリポジトリでも、別のPCや別環境で作業した内容がGitHub側にある場合があります。久しぶりに作業を始めるときは、いきなり編集する前にFetchやPullで状態をそろえると、後でつまずきにくくなりますよ。

Pullする前に確認したい3つのポイント

Pullする前には、いくつか押さえておきたいポイントがあります。順番にチェックしておくと、後から「あれっ」と慌てる場面が少なくなりますよ。

未保存・未コミットの変更がないか確認する

VS Code上でファイルを編集したまま保存していない、あるいは保存していてもGitにコミットしていない変更があるときは、Pull前に状態を確認しましょう。

必要であれば先にコミットする、または作業内容をstashで一時退避する方法もあります。判断に迷ったら、変更中のファイル名をメモしてから操作すると安心ですよ。

今いるブランチを確認する

Pullは、現在チェックアウトしているブランチに対して実行されます。

mainで作業しているつもりが別のブランチにいた、あるいは逆のパターンになっていると、思った場所に変更を取り込めません。VS Codeの左下に表示されているブランチ名を確認してから操作する習慣をつけておくと安心。

GitHubへの接続はSSHを基本にする

GitHubからcloneやpullをするとき、接続方法にはHTTPSとSSHの2つがあります。

私はGitHub操作のときはSSH接続を基本にしています。SSHキーを一度設定しておけば、Pullやpushのたびにパスワードやトークンで迷う手間が減るからです。HTTPSでつまずいてSSHに切り替えてからは、操作のストレスがぐっと減りました。

ただし、会社やチームのルールによってはHTTPSを使うケースもあります。実際の運用では、リポジトリのURLやチーム方針も合わせて確認してください。

まとめ

VS CodeのGit FetchとPullは、似ているようで役割が違います。

Fetchは、GitHubなどリモート側の最新情報を確認する操作。自分の作業ファイルへ直接取り込む前に、リモートにどんな更新があるかを把握できます。

Pullは、リモート側の変更を自分のローカル環境へ取り込む操作。便利な反面、未コミットの変更やブランチの違いがあると、コンフリクトや想定外の取り込みにつながることもあります。

迷ったときは、まずFetchで確認し、そのあとPullするかどうかを判断する流れがおすすめ。

慣れてくると、VS CodeのSource Control画面でincoming/outgoingの表示を見ながら、今どちら側に変更があるのかを自然に読めるようになります。

なお、画面表示やメニュー名はVS Codeのバージョンによって変わることがあります。公開前には実際のVS Code画面と公式ドキュメントで最新の表記を確認してくださいね。

よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

サイト「インターネットビジネスの世界」運営者。ビジネスプロデューサー、著述業。メルマガやブログを書きながら、好きなことをしてのんびりと生きています。

目次