【Git入門】ローカルリポにリモートリポの内容を反映する(fetch,merge,pullの違い )
0.はじめに
Git入門者向けに、「ローカルリポにリモートリポの内容を反映する方法」を解説します。
本記事の内容に沿って、ハンズオンいただくと以下を習得できます。
- 「ローカルリポジトリにリモートリポジトリの内容を反映する方法」を習得できる
-
git fetch、git merge、git pullの違いが理解できる
では、次の章から具体的な解説を進めます!
1.ローカルリポにリモートリポの内容を反映する3つの方法
ローカルリポにリモートリポの内容を反映するには、以下3つの方法があります。
git fetchgit mergegit pull
1.1.git fetch
git fetchはリモートリポからローカルリポに最新情報(リファレンス)を取得するコマンドです。この際、マージはされません。
git fetchコマンドの使い方
$ git fetch <remote_ref>
※<remote_ref>はリモートリポのリファレンス名を指定(例:"origin"など)
※<remote_ref>を省略すると、デフォルトでoriginになる
※情報を取得するだけで、マージはしない
※ローカルリポのremotes/<remote_ref>/<branchname>に情報が更新されていく(git branch -aでリファレンス情報を確認できます。)
$ git fetch origin
1.2.git merge
ローカルリポにリモートリポのブランチを反映させたい場合は、git mergeを利用します。
git mergeコマンドの使い方
$ git merge <branchname>
※マージする前に差分(diff)を確認するとよい
$ git merge origin/main
1.3.git pull
git pullはgit fetchとgit mergeを組み合わせたものです。
リモートリポからローカルリポに最新情報を取得(fetch)した上で、マージ(merge)も行います。つまり、fetchとmergeを一括で実行してくれるということです。
git pullコマンド使い方
$ git pull <remote_ref> <branchname>
※リモートリポの名前(reference名)は、git remote -vで確認可能。通常はoriginを指定すればOK
$ git pull origin main
普段の業務では、pullしてローカルリポを更新することがほとんどですので、次章からgit pullの具体的な使用例を見ていきます。
2.git pullコマンドの実践
実際に、「リモートリポのmainブランチの情報をローカルリポのmainブランチにpullする方法」を解説します。

- ローカルリポのmainブランチのREADME.mdは古いまま
- 基本的にはmainブランチはリモートリポと同期させる
- pullコマンドは、アクティブブランチにマージするコマンド
- mainブランチに移動してから
git pullコマンドを使う
2.1.ローカルリポにて、mainブランチに移動する
まず、git branchコマンドで、現状のアクティブブランチを確認します。
$ git branch
main
* update-readme
$
現状、update-readmeブランチ上にいるので、git checkoutコマンドでmainブランチへ移動します。
$ git checkout main
Switched to branch 'main'
Your branch is up to date with 'origin/main'.
$
$ git branch
* main
update-readme
$
再度、git branchコマンドでアクティブブランチがmainになっていることを確認しましょう。
$ git branch
* main
update-readme
$
以上で、mainブランチへ移動できました。
2.2.リモートリポのmainブランチの情報をローカルリポのmainブランチにpullする
ローカルリポのmainブランチの情報を更新する前に、現状のREADME.mdの中身を確認しておきましょう。
$ cat README.md
# sample-repo
練習用に更新!
$
では、git pullコマンドを実行し、ローカルリポのmainブランチの情報を更新します。
$ git pull origin main
すると、以下のように表示されローカルリポへ反映が完了するはずです。
$ git pull origin main
remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (1/1), 908 bytes | 302.00 KiB/s, done.
From github.com:username/sample-repo
* branch main -> FETCH_HEAD
dc6912d..5a53437 main -> origin/main
Updating dc6912d..5a53437
Fast-forward
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
$
以上で、ローカルリポのmainブランチの更新は完了です。
2.3.ローカルリポのmainブランチのREADME.mdが更新されていることを確認する
再度、README.mdの中身を確認してみると、内容が更新されていることがわかると思います。
$ cat README.md
# sample-repo
Gitの練習用リポジトリ
$
git pullコマンドの実践は以上となります。
3.おわりに
今回は「ローカルリポにリモートリポの内容を反映する方法」を習得するために、以下を学びました。
-
git fetchは、リモートリポの最新情報(リファレンス)をローカルリポへ反映する -
git mergeはリモートリポ上の他メンバーの作業内容(ブランチ)をローカルリポへ反映する -
git pullはgit fetchとgit mergeを一括で実施する(pullを使う場合が多い) - ローカルリポジトリにリモートリポジトリの内容を反映するための、ワークフロー(
git pull)
一回で覚えるのは難しいと思うので、何度かトライして覚えるで全然大丈夫です。
今後もGitの基本的なワークフローについて解説していきます。
おわりっ!
Discussion