リモートブランチって何?
今回はリモートブランチについて解説していきます。
リモートブランチについては、「git fetch」の解説をしたときに少し紹介しました。
今回はしっかりとリモートブランチについて解説していきます。
リモートブランチとは何なのか。
リモートブランチとは、リモートのブランチの状態へのポインタになります。
何を言っているのかあまり意味がわからないかもしれないですね。
言葉にするとややこしいので、イメージで押さえていきましょう。
今状況として、リモートリポジトリ(GitHub)にmainブランチとfeatureブランチがプッシュされていたとします。
一方、ローカルリポジトリの方にはmainブランチとtopicブランチというものがあります。
mainブランチは「a6923」というコミットファイルを指していて、それはリモートリポジトリにある「a6923」というコミットファイルと同じ物です。
ここで注目して欲しいのは、リモートリポジトリの方にあるfeatureブランチがローカルには無いことと、ローカルリポジトリのmainブランチが指しているコミットファイルが「a6923」とリモートリポジトリの状態よりも古いものを指しているということです。
これはどういうことかというと、自分のローカルリポジトリの内容が古くて、その後に他の人が開発を進めた結果、リモートリポジトリの方(GitHubの方)にはそれよりも進んだファイルの状態があるということです。
つまり、mainブランチのコミットが進んでいて、またfeatureブランチが新しく作られていると言う状況だということです。
ではここで、リモートリポジトリの内容をローカルリポジトリの方に取得してきましょう。
取得するコマンドは「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/ブランチ名」の形で保存されていることを頭の片隅に置いておいてください。
参考図書
独学で挫折しそうになったら、オンラインプログラミングスクール