未来エンジニア養成所Blog

プログラミングを皆に楽しんでもらうための情報をお届けします。

【Git&GitHub】リモートブランチとは

title


リモートブランチって何?

今回はリモートブランチについて解説していきます。


リモートブランチについては、「git fetch」の解説をしたときに少し紹介しました。

今回はしっかりとリモートブランチについて解説していきます。


リモートブランチとは何なのか。


リモートブランチとは、リモートのブランチの状態へのポインタになります。


何を言っているのかあまり意味がわからないかもしれないですね。


言葉にするとややこしいので、イメージで押さえていきましょう。


今状況として、リモートリポジトリ(GitHub)にmainブランチとfeatureブランチがプッシュされていたとします。

一方、ローカルリポジトリの方にはmainブランチとtopicブランチというものがあります。

リモートブランチ


mainブランチは「a6923」というコミットファイルを指していて、それはリモートリポジトリにある「a6923」というコミットファイルと同じ物です。


ここで注目して欲しいのは、リモートリポジトリの方にあるfeatureブランチがローカルには無いことと、ローカルリポジトリのmainブランチが指しているコミットファイルが「a6923」とリモートリポジトリの状態よりも古いものを指しているということです。


これはどういうことかというと、自分のローカルリポジトリの内容が古くて、その後に他の人が開発を進めた結果、リモートリポジトリの方(GitHubの方)にはそれよりも進んだファイルの状態があるということです。

つまり、mainブランチのコミットが進んでいて、またfeatureブランチが新しく作られていると言う状況だということです。


ではここで、リモートリポジトリの内容をローカルリポジトリの方に取得してきましょう。

取得するコマンドは「git fetch」コマンドですので、「git fetch」を実行してみます。

git fetch


これは何が起こっているのかというと、「origin/main」というブランチが作成されて、そのブランチは「23q1a」というコミットファイルを指し示しています。

また「origin/feature」というブランチも作成され、そのブランチは「rf54h」というコミットファイルを指し示しています。


このように「git fetch」するとリモートリポジトリの内容を取得できるのですが、これはリモートリポジトリのコミットファイルをローカルにも保存し、またブランチに関しては「origin/ブランチ名」という形でブランチを作成して、そこでそのコミットファイルへのポインタとして機能しています。


このように「git fetch」すると「origin/ブランチ名」という形で、ブランチの内容が保存されるのです。

マージのところで解説した際に、「git fetch」してきたmainブランチの内容をローカルリポジトリのmainブランチにマージしたい時は「git merge origin/main」というコマンドを使うと紹介しました。

それはなぜかというと、「git fetch」してきたmainブランチの内容というのは、「origin/main」で参照ができ、そこに保存されているからです。


実際にやってみよう

ではターミナルを開いてリモートリポジトリのブランチの内容が「origin/ブランチ名」の形で保存されていることを確認しましょう。


まず始めにリモートリポジトリの内容を取得してきます。

「git fetch」します。

$ git fetch


今回は、すでに最新のGitHubの内容は取得してきているので、「git fetch」しても何も表示されませんでした。


ではリモートブランチについて確認していきます。

確認するためには「git branch -a」と入力してみましょう。

$ git branch -a
* main
  remotes/origin/feature
  remotes/origin/main


するとmainというブランチと「remotes/origin/feature」と「remotes/origin/main」という3つのブランチがあることが分かります。

このうちの下2つがリモートブランチです。


リモートのfeatureブランチの内容は「remotes/origin/feature」に、リモートのmainブランチの内容は「remotes/origin/main」に保存されています。


「remotes」と始めに冠がついているのですが、このブランチの内容を参照したり、このブランチの内容を使いたい場合(例えば「git merge」するばあい)は、「remotes」は付けなくて大丈夫です。

あくまで「origin/feature」「origin/main」という形で、マージしたりすることができます。


このように「git fetch」してくると、そのfetchしてきた内容というのは「origin/ブランチ名」の形で保存されていることを頭の片隅に置いておいてください。


参考図書



独学で挫折しそうになったら、オンラインプログラミングスクール
未来エンジニア養成所Logo



あわせて学習したい

phoeducation.work