未来エンジニア養成所Blog

月単価180万以上のプログラミング講師がプログラミングを皆に楽しんでもらうための情報をお届けします。

【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