リモートリポジトリ(GitHub)から情報を取得する方法についてご説明していきます。
リモートリポジトリから情報を取得するには大きく分けて下記の2種類あります。
- fetch(フェッチ) ⇒ 取得する
- pull(プル) ⇒ 引き寄せる
今回はpullを利用して情報を取得する方法についてお話していきます。
fetchとpullの違い
似たような動作をするfetchとpullの違いについてご紹介
fetch
リモートリポジトリからローカルリポジトリに情報を取得するコマンド
git fetch origin main
取得した手元のワークツリーに反映させるには下記のmergeコマンドを利用する必要がある。origin/mainは取得したブランチ名を指定する。
git merge origin/main
おまけ
取得したブランチ名がわからない場合は下記のbranchコマンドを利用すれば確認することができる。
git branch -a
-aはallの略ですべてのブランチを意味する。
$ git branch -a
* main //*印は現在の作業ブランチ
remotes/origin/main //fetchで取得したブランチ
fetchコマンドの詳細は下記を参照してください。
pull
リモートリポジトリからワークツリーに情報を取得するコマンド
git pull origin main
fetchを使用した場合の下記の2つのコマンドと同じ動作を1つのコマンドで実行できる。
git fetch origin main
git merge origin/main
pullの使い方
pullコマンドはリモートリポジトリ(GitHub)からローカルリポジトリに情報を取得して手元のワークツリーに反映させることができる。
基本型: git pull リモート名 ブランチ名
git pull origin main
下記のように省略も可能
git pull
pullを利用して情報を取得してみる
テスト用にリモートリポジトリにpull.htmlファイルを作成しておく。
Linuxのlsコマンドで現在のフォルダ内のファイルを確認する
$ ls
index.html remote.html secret.txt style.css
pullコマンドを実行してリモートリポジトリの情報を取得する
$ git pull origin main
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 2 (delta 1), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (2/2), 613 bytes | 55.00 KiB/s, done.
From https://github.com/ユーザー名/リポジトリ名
* branch main -> FETCH_HEAD
cef8f1b..9613ebc main -> origin/main
Updating cef8f1b..9613ebc
Fast-forward
pull.html | 1 + //詳細①
1 file changed, 1 insertion(+)
create mode 100644 pull.html
詳細①
リモートリポジトリで追加されたpull.htmlファイルを取得してきたのがわかる。
Linuxのlsコマンドを実行して現在のフォルダに先ほど追加したpull.htmlファイルがあることを確認する。
$ ls
index.html pull.html remote.html secret.txt style.css
ある!
注意点
リモートリポジトリからの取得とマージまで一括でできてしまうpullコマンドは一見すると便利そうですが注意点もあります。
ワークツリーに複数の作業ブランチがある場合
自身の手元に下記二つの異なる作業ブランチがあるとします。
- foo 現在の作業ブランチはfoo
- bar
リモートリポジトリからAさんが修正したbarの情報を取得して最新の状態にbarを更新したい・・・
そんなときに下記を実行してしまうと
git pull origin bar
barのブランチを更新するのではなく現在の作業ブランチであるfooに統合される
リモートリポジトリのorigin/barからpullするとローカルブランチのbarに統合されると思ってしまうかもしれません。
ですが、実際には現在いる作業ブランチのfooに取得したbarの情報が統合されてしまいます。
実際のプロジェクトでこれを行ってしまうと大変なことになってしまいます。
すべてが終わった・・・
そうならないようにしっかりと注意をしてpullは利用しましょう。
どうしても不安な方はgitの操作に慣れるまではfetchを利用しても良いかもしれません。