Git入門#14(リモート情報の確認・追加・取得をしてみよう)




cocomaru
今回は僕のリポジトリから更新した部分を、hirominのリポジトリへ反映させる方法を教えるね!
hiromin
はーい。
cocomaru
まず取得するコマンドなんだけど、「git fetch(フェッチ)」と「git pull(プル)」の2種類あるん。
hiromin
へー、違いって何なの?
cocomaru
うん、それは言葉で伝えるより、図の方からわかりやすいから、それを使って説明するね!
hiromin
うん!

リモート情報の確認と追加をしてみよう

どうも、coocmaruです。

今回はリモートリポジトリの更新内容を、自分のPC上のローカルリポジトリに反映する方法を実践していきたいと思います!

が、まずその前にリモート情報を表示するコマンドを紹介します!

git remote

リモート情報を表示するには「git remote」になります。
また詳細な情報を表示するにはオプションとして「-v」を付加してください。

早速、実行してみます。

# 前回、クローンしたディレクトリへ移動 
$ cd ~/Desktop/github-tutorial/

# リモート情報を表示 
$ git remote -v 
origin  git@github.com:hiromindayo/github-tutorial.git (fetch)
origin  git@github.com:hiromindayo/github-tutorial.git (push)

origin」という名前と、fetchとpushのURLが表示されたかと思います。
originという単語は、リモートリポジトリのURLの別名になります。

この別名を使って、GitHubへ簡易的にアクセスできるようにしてくれているんですね。今後、この別名はよく出てくるので、URLの別名なんだなって覚えておいてください。

git remote add <リモートURLの別名(以下:リモート名)> <リモートURL>

では、次にリモート情報を追加してみましょう。

今回は私のリポジトリを追加します。

# リモート情報を追加 
$ git remote add upstream https://github.com/cocolabo/github-tutorial

# リモート情報を確認 
$ git remote -v
origin  git@github.com:hiromindayo/github-tutorial.git (fetch)
origin  git@github.com:hiromindayo/github-tutorial.git (push)
upstream    https://github.com/cocolabo/github-tutorial (fetch)
upstream    https://github.com/cocolabo/github-tutorial (push)

実行後は↓のような構成になります。

リモートの情報を取得してみよう

リモート情報の追加も完了したかと思いますので、今度は追加したリモート情報の変更分を、自分の作業用ディレクトリへ反映してみましょう。

先にリモート情報を取得する方法は2種類あると伝えましたが、まずは「git fetch」を使ってみます。

流れを図にすると以下のようになります。

git fetch <リモート名> <ブランチ名>

それでは、こちらの変更を取り込んでみましょう!

…と、その前にcocolaboの情報を修正しないとですね。
ファイルはGitHub上で修正できるので、今回は「new.html」を以下のように修正しました!

修正が完了したので、進めていきます。

# cocolaboのリモートリポジトリの最新情報を取得 
$ git fetch upstream
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/cocolabo/github-tutorial
 * [new branch]      master     -> upstream/master
自分のリモートリポジトリの取得は「upstream」の部分を「origin」としてください。

上記の通り、git fetchで最新情報は取得できました。
しかし、ここで気をつけていただきたいのが、git fetchではローカルリポジトリの情報は更新しますが、作業用ディレクトリは更新されてません

ですので、反映するには「git merge」コマンドを実行する必要があります。

# リモートプランチの内容を反映する 
$ git merge upstream/master
Updating a5244dc..118a870
Fast-forward
 new.html | 1 +
 1 file changed, 1 insertion(+) 

# 反映されていることを確認 
$ cat new.html
<p>git fetch練習用</p> ←追加されている

こちらでローカルのブランチにリモートブランチのコミット履歴が反映され、作業用ディレクトリの内容も更新されました。

取得した際にはこれから説明する「git pull」のコミット履歴や、その他の履歴情報も同時に取得されるかと思います。

こちらは説明進行の都合上、このような形になってしまいますので、ご了承いただければと思います…。

またこのシリーズは、私と一緒に手を動かしながら学んでいただければと考えておりますが、
私のリポジトリに対しては権限がない為、修正は難しいかと思います。

ですので、今回からは記事を読んで頂き、流れを理解していただければ幸いです…><;

git pull <リモート名> <ブランチ名>

続いてはgit pullになりますが、言葉で説明するより図を見た方がイメージしやすいと思いますので、こちらをご覧ください。

図の通り、git pullは「git fetch」と「git merge」を同時に行ってくれる、言わばショートカットのようなコマンドになります。

では実際にコマンドを実行してみます!
こちらも以下のように修正したものを取り込んでいきたいと思います。

$ git pull upstream master
remote: Counting objects: 3, done.
remote: Compressing objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (3/3), done.
From https://github.com/cocolabo/github-tutorial
 * branch            master     -> FETCH_HEAD
   118a870..0f52327  master     -> upstream/master
Updating 118a870..0f52327
Fast-forward
 new.html | 1 +
 1 file changed, 1 insertion(+)

$ cat new.html
<p>git fetch練習用</p>
<p>git pull練習用</p> ←追加されている

上記の通り、取得と更新を同時に行う事が確認できました^^

ポイント
  • 取得と更新を一緒にしたいときは、「git pull」を使う
  • 「git pull」を実行する際、必ずマージしたいブランチに「git checkout」で移動することを意識すること

hiromin
まだ練習中だけど、段々チームで開発しているっぽくなってきて楽しいな♪
cocomaru
そう言ってくれると、こっちも嬉しいよ^^
hiromin
あ、今回、取得の方法を教えてくれたけど、リモートリポジトリに反映する方法もあるんでしょ??
cocomaru
もちろん!じゃあ次は「プッシュ」のやり方について教えます!
hiromin
お願いします(人・∀・)

今回でこのシリーズも14回目になりましたが、ここまでお読みいただいてありがとうございます♪
まだまだ続けていきたいと思いますので、次回もまたよろしくお願いしますヽ( ´ ▽ ` )ノ

Git入門#15(リモートにプッシュしてみよう)

2018.08.27








コメントを残す

メールアドレスが公開されることはありません。