【初心者向け】git pullコマンドの使い方を徹底解説!リモートリポジトリからコードを取得する方法
git pullコマンドは、リモートリポジトリの内容を取得してローカルマシンにダウンロードし、ローカルリポジトリを最新の状態に更新するためのコマンドです。
Gitリポジトリのコードを自分のマシンに取得したい場面は、開発作業の中で頻繁に発生します。例えば、地元の食料品店の注文管理アプリを開発しているとしましょう。アプリに変更を加えながら作業を進めるには、リモートリポジトリから常に最新のコードを取り込む必要があります。そうすることで、常に最新のコードベースで作業できるようになります。
そんなときに活躍するのがgit pullコマンドです。この記事では、実際のコード例を交えながら、git pullコマンドの基本的な使い方を詳しく解説します。
git pullコマンドとは?
「コードをpullする」とは、リモートリポジトリからコンテンツをダウンロードし、自分のコンピュータに保存する一連のプロセスを指します。
Gitでコードをpullするには、git pullコマンドを使用します。このコマンドは、実質的に以下の2つのコマンドを実行する便利なショートカットです。
- git fetch:リモートリポジトリのメタデータを取得する
- git merge:取得した変更をローカルブランチに統合する
git pullの動作の流れ
git pullの仕組みを順番に見ていきましょう。
ステップ1:リモートリポジトリのダウンロード
git pullを実行すると、まず対象のリモートリポジトリがダウンロードされます。リポジトリ内のコードのコピーと、それに関連するGitコミットがローカルマシンに保存されます。
ステップ2:マージ(統合)処理の実行
続いて、Gitのマージ操作が実行されます。これにより、ローカルマシン上の既存のコードと新しく取得したコードが統合され、最終的なコードベースが1つにまとめられます。このバージョンは、リモートブランチから取得した内容と一致します。
git pullコマンドの基本的な使い方
git pullコマンドは、リモートリポジトリを取得し、そのコードをローカルのリポジトリにダウンロードします。基本的な構文は以下の通りです。
git pull <remote>
「remote」パラメータには、ローカルマシンにpullしたいリモートリポジトリを指定します。このコマンドを実行すると、リモートリポジトリが取得され、ローカルのリポジトリにマージされます。
なお、git pullコマンドは未追跡(untracked)ファイルには影響しません。Gitが追跡しているリモートブランチ上のファイルに対する変更のみが取得され、ローカルの作業ツリーに保存されます。
実行例:originリポジトリからpullする
「origin」リポジトリの内容を取得してみましょう。「origin」はリポジトリでデフォルトで使われる「remote」の値です。originのmasterブランチをpullするには、次のように実行します。
git pull origin/master
このコマンドを実行すると、以下のような出力が返されます。
From https://github.com/jamesgallagher432/demo-repository b53b22d..a7d8dc2 master -> origin/master Updating b53b22d..a7d8dc2 Fast-forward README.md | 2 ++ 1 file changed, 2 insertions(+)
まず、コマンドが作業中のリモートリポジトリを取得します。その後、検出された変更がローカルのコードにマージされます。
この例では、リポジトリ内のREADME.mdファイルがローカルマシンのものと異なっていました。git pullを実行したことで、その差分が検出され、ローカル環境にマージされたのです。
git pullを実行した後は、ローカルマシン上のコードがリモートリポジトリと同じ状態になります。これにより、コードに変更を加える際、リポジトリの最新バージョンとの互換性が保たれていることが保証されます。新しいコミットがリモートリポジトリにpushされた場合は、再度git pullを実行すれば最新版を取得できます。
ファイルが正しく更新されたかどうかは、git logコマンドで確認できます。このコマンドを実行すると、リポジトリに対して行われたすべてのコミット履歴が表示されます。
特定のリモートブランチをpullする方法
特定のブランチのコードだけをpullしてローカルマシンに保存したい場合もあります。例えば、「dev-v0.9」というブランチで作業を行う予定があり、そのブランチのコードだけを取得したいケースです。
その場合は、git checkoutコマンドで対象ブランチに切り替えてから、git pullコマンドを実行します。構文は以下の通りです。
git checkout <branch name> git pull <remote>
先ほどの例であれば、次のコマンドを実行します。
git checkout dev-v0.9 git pull origin
git checkoutコマンドにより、「dev-v0.9」ブランチに移動します。続くgit pull originコマンドで、「dev-v0.9」ブランチ上のコードのコピーが取得・保存されます。ダウンロードが完了すると、マージ操作が自動的に実行され、ローカルリポジトリがリモートと同じ状態に更新されます。
git pullを強制実行する方法(Force Pull)
pull操作を強制的に実行することも可能です。破棄したい未追跡ファイルのエラーが発生した場合などに、強制pullはよく使われます。
ただし、強制pullを実行する前に、ローカルの変更が失われても問題ないか必ず確認してください。強制pullを行うと、ローカルのすべての変更が上書きされます。
強制pullの手順
ステップ1:コミットのメタデータを取得する
まず、ローカルマシンに保存したいコミットのメタデータをfetchします。
git fetch --all
ステップ2:現在のブランチをバックアップする
次に、現在のブランチをバックアップしておきましょう。バックアップを作成しておけば、後で戻りたくなった変更を失う心配がありません。
git branch -b backup
ステップ3:resetコマンドでpullする
ブランチのバックアップが完了したら、resetコマンドを使って変更をpullできます。
git reset --hard origin/master
「origin/master」の部分は、作業中のプロジェクトに合わせて、適切なリモート名とブランチ名に置き換えてください。「origin」はオリジンリポジトリを表し、「master」はコードを取得するブランチ名です。
git pullとgit fetchの違い
git fetchとgit pullは、どちらもリモートリポジトリの内容を取得するコマンドですが、両者の違いに混乱する開発者は少なくありません。
git fetchは、リモートリポジトリからメタデータのみを取得します。このメタデータは、ローカルマシンにpullできる変更が存在するかどうかを確認するために使われます。一方、git pullは、メタデータだけでなく、実際に変更されたファイルもダウンロードします。
git pullコマンドは、最初にfetch操作を実行します。ローカルリポジトリとリモートリポジトリの間に差分が検出された場合、その変更がダウンロードされる仕組みです。
git pullを使用する際は、変更を受け入れる準備ができていることを確認してください。準備が整っていないまま実行すると、コミット時にコードの競合(コンフリクト)が発生する可能性があります。
まとめ:
- ローカルとリモートの間に変更があるかどうかを確認したいだけなら →
git fetch - メタデータの取得と変更のダウンロードを同時に行いたいなら →
git pull
まとめ
git pullコマンドは、リモートのGitリポジトリに保存されているコードを取得・ダウンロードするためのコマンドです。git fetchがメタデータのみを取得するのに対し、git pullはメタデータとリポジトリ内のファイルへの変更の両方を取得します。
この記事では、コードをpullする基本概念と、git pullコマンドの具体的な使い方を解説しました。これであなたも、プロの開発者のようにgit pullコマンドを使いこなせるはずです!
-
GitのDetached HEAD(分離HEAD)とは?発生原因と安全な復旧方法を解説
Gitを使っていると、突然「detached HEAD(分離されたHEAD)」という状態に遭遇することがあります。日常的にはあまり出会わない現象ですが、仕組みを理解しておけば慌てずに対処できます。この記事では、detached HEADの正体と、コミットを失わずに復旧する方法をわかりやすく解説します。 おさらい:Gitの基本構造 HEADを理解するために、まずGitの内部構造をおさらいしましょう。 作業ディレクトリ(Working Directory):ローカルの作業フォルダそのものです。git statusを実行すると、現在の作業ディレクトリの状態を確認できます。 HEAD:現在チェ
-
Gitリセットでコミットを取り消す!基本から実践テクニックまで徹底解説
個人でもチームでも、プロジェクトを進めていると「コミットを取り消したい」という場面に遭遇することがあります。そんなときに頼りになるのが git reset コマンドです。まさに命綱とも言えるツールの一つでしょう。 Gitの追跡メカニズム git reset を理解する前に、まずGitの内部構造について押さえておきましょう。Gitは、ノードとポインタで構成されるツリー構造によってファイルを管理・追跡しています。 ローカルのGitリポジトリには、基本的に次の3つの「ツリー」が存在します。 作業ディレクトリ(Working Directory):ワーキングツリーとも呼ばれ、ローカルディレク