Gitにおけるブランチについて意味や用途などを初心者の方にもわかりやすく解説!

今回はGitなどのバージョン管理システムにてよく出てくるブランチという言葉について解説いたします。
Gitには専門用語が多くあるのですが、同じような場面でいろいろな単語が出てきて混乱しがちなので、そういったことにならないように用語のイメージをつかめるように詳しく解説いたします。

スポンサーリンク
目次

ブランチとは

ブランチとは開発を進めている大元のプロジェクトとは別の場所に保存されるようにプロジェクトからコピーしてきた別の開発領域のことを言います。

お昼とかちょっとおしゃれなランチとかそういう意味ではありません。
ここでいうブランチは「」を意味します。

大元とは切り離された場所で開発を進めることで、本体に影響を与えることなく自分の開発スペースを保つことができます。
影響を切り離すという観点ではローカルリポジトリとリモートリポジトリの関係性にも似てる感じがしますが、ブランチはリポジトリ内でさらに分岐している状況になります。

まさに木(リポジトリ)から様々に枝(ブランチ)別れしている状況ということです。

リポジトリってなんだっけという方は以下の記事をご覧になってみて下さい。

上記で大元(本体)と記載しましたが、リポジトリの大元は大半が [master] というブランチ名になっておりますので [master] ブランチを操作する場合は気を付けるようにしてください。

ブランチの種類について

ブランチにはリポジトリと同じようにいくつか種類がありますので、それぞれ区別できるようにして自分が今どこのブランチをいじっているか把握できるようにしましょう。

ローカルブランチとは

ローカルブランチという言葉が定義されているかはわかりませんが、一般的にローカルリポジトリで作成したブランチをローカルブランチと呼ぶことが多いです。

ローカルリポジトリ内でブランチを切ること自体あまりないとは思いますが、ローカルブランチといわれたらローカルリポジトリにあるブランチのことを言っているのだと認識するようにしましょう。

リモートブランチとは

リモートブランチはローカルブランチの説明から想像つくと思いますが、リモートリポジトリに対するブランチのことを指す場合が多いです。

基本的にはブランチはリモートリポジトリに作成するものなので多くの場合はこの、リモートリポジトリを意味していることが言っております。

(リモート)追跡ブランチ

リモート追跡ブランチとはリモートブランチと同様の処理状況を保持するローカルブランチのことを意味します。
ただ単に追跡ブランチと呼ぶ場合もあります。英語ではリモートトラッキングブランチといいます。
この追跡ブランチがブランチの理解についてややこしくしている要因でもある気もします。

まずなぜこのようなブランチが必要なのかについてですが、リモートブランチの状態を確認するには必ずネットワークにつながっている必要がありますよね。

そうするとローカルで使う時にはリモートブランチの状態が取得できなくて、ネットワークがないところで作業するには不便ですよね。

そのため、リモートブランチの状態を保持して参照するためのブランチが、ローカルにリモート追跡ブランチとして存在するわけです。

公式ではリモートブランチのブックマークのような存在であるといっています。

ただし、リモート追跡ブランチはローカルにあるブランチなので、一定のタイミングでリモートブランチの内容を取得する必要があります。それが [fetch] コマンドです。いわゆる同期処理ってやつです。

[fetch] を実行することで、リモートブランチのその時の最新の内容がリモート追跡ブランチへと反映されます。逆に [fetch] をしない限りリモート追跡ブランチの内容は古いままで、追跡とは名ばかりの存在になってしまいます。

あれでも普段 [fetch] なんてしてないけどなあと思ったそこのあなた!
[pull] が 実は [fetch] とさらに ローカルのブランチへ [merge] する動きを担っています。

なので [pull] をすることで知らないうちに [fetch] と [merge] を一緒にやってくれているわけですね。

上記を踏まえたうえでリモートリポジトリからのpullとpushの動作を見てみると実は以下のようになっております。

ツールを使う上ではリモート追跡ブランチの存在はあまり気にしなくても Git は使えるのですが、しっかりと動きを理解する場合はこのリモート追跡ブランチの存在は無視できません。

とりあえずは、ざっくりと公式で言っているようにリモートブランチのブックマークのようなものと理解しそこから順を追って理解していくと良いと思います。

今回はここまでです。

お疲れ様でした。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

本業ではPHPを使ったWEBアプリやJavaを使用した基幹アプリを作成しております。Pythonは個人的に勉強しており、E資格を取ったりしたおかげで、業務でAIの研究とかも任されるようになりました。学習のアウトプットのために本サイトを運営しておりますが、これからPythonを学ぶという人のお役に立てればいいなと思います。わからないことや調査して記事にしてほしいことがございましたらご連絡いただけると幸いです。

コメント

コメントする

目次
閉じる