リモートリポジトリの変更をローカルリポジトリに同期する(git pull)
プルリクエストによってマージする ではリモートリポジトリ上でマージを行いました。本記事では、リモートリポジトリ上の変更をローカルリポジトリに同期する操作を説明します。リモートリポジトリの変更をローカルリポジトリに同期する操作をプル (pull) するといいます。 プルする
1. 同期したいブランチに変更する
ターミナル上でリポジトリがあるディレクトリに移動します。移動後、以下のコマンドでブランチを変更します。プルリクエストによってマージするで更新されたのは main ブランチです。ですので main ブランチに移動します。 code: mainブランチに移動.sh
$ git checkout main
# または
$ git switch main
2. プルする
リモートリポジトリの main ブランチの変更をローカルリポジトリの main ブランチに取り込みます。git pullを使います。
code: git pull.sh
$ git pull origin ${ブランチ名}
# git push -u origin main をしていた場合
$ git pull
今回の実行結果は以下のようになります。
code: 実行結果.sh
$ git pull origin main
Enter passphrase for key '${sshキーのパス}':
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), 684 bytes | 136.00 KiB/s, done.
From github.com:Yukiho-YOSHIEDA/git-sample
* branch main -> FETCH_HEAD
61cd9dc..e7e4fc6 main -> origin/main
Updating ${コミットハッシュ}..${コミットハッシュ}
Fast-forward
"${更新されたファイル名}" | 1 +
1 file changed, 1 insertion(+)
create mode 100644 "${新規作成されたファイル名}"
ここまでお疲れ様した!
ここまでで Git の基本的な操作はマスターしたと言っても過言ではないでしょう。しかしながら実務インターンシップに耐えうる知識には少し届かないでしょう。もっと知識を深めたい方は目次に記載されている【実践編】に挑戦してみてください! ここまでお読みいただきありがとうございました。
TIPS:git pull = git fetch + git merge
git pull は実は git fetch と git merge をセットにしたコマンドです。git fetch はリモートリポジトリの変更をローカルリポジトリが保存しているリモートリポジトリのブランチに反映します。このブランチのことをリモート追跡ブランチと呼びます。
リモート追跡ブランチも確認するときは以下のコマンドを実行します。
code: リモート追跡ブランチを含むブランチ.sh
$ git branch -a
* main
remotes/origin/main # remotes/ から始まるのがリモート追跡ブランチ
git fetch だけではローカルリポジトリのブランチにはなんら影響はありません。git merge というマージをする操作によってローカルリポジトリのブランチにも反映します。
git pull を使わず更新したときの操作を示します。特別なことがない限り使うケースは少ないですが、覚えておくといつか役に立つかもしれません。
code: git pullを使わないローカルリポジトリの更新.sh
$ git fetch
Enter passphrase for key '${sshキーのパス}':
remote: Enumerating objects: 4, done.
remote: Counting objects: 100% (4/4), 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), 720 bytes | 55.00 KiB/s, done.
From ${リポジトリのURL}
${コミットハッシュ}..${コミットハッシュ} main -> origin/main
$ git branch
* main
$ git merge origin/main
Updating ${コミットハッシュ}..${コミットハッシュ}
Fast-forward
${更新されたファイル名} | 1 +
1 file changed, 1 insertion(+)
create mode 100644 ${新しく追加されたファイル名}