【Eclipse×GitHub】図で解説するGitHubバージョン管理方法

【Eclipse×GitHub】図で解説するGitHubバージョン管理方法

①: ~ 概要編 ~
②: ~ Git操作用語編(初級) ~
③: ~ Git操作用語編(中級) ~ ← 今ここ
④: ~ Eclipse操作編 ~

前回はGitを操作していくうえで最低限知っておくべき用語について説明しました。

今回はもう少し踏み込んで知っておくと便利な操作用語について説明していきたいと思います。

今日は新たに2つの操作「フェッチ(Fetch)」「マージ(Merge)」の説明をします。
ですが、これらを理解していくにはまず「リモート追跡ブランチ」の概念を理解しておく必要があります。
Sponsored Link

「リモート追跡ブランチ」とは何なのか?

ローカルリポジトリの内部は、実は2層のブランチ構造となっている!

このとき、上位層のブランチを「リモート追跡ブランチ」、下位層のブランチを「ローカルブランチ」と呼ぶ。

<リモート追跡ブランチ>

  • ローカルリポジトリ内の上位層に存在するブランチ
  • Eclipse等のツールでは「origin/master」と表記されることが多い
  • リモートリポジトリと紐づいていており、リモートリポジトリの変更履歴の取り込み先の役割を果たす。
  • リモートリポジトリから取り込んだ変更履歴をローカルリポジトリへ渡す橋渡し的な存在

<ローカルブランチ>

  • ローカルリポジトリ内の下位層に存在するブランチ
  • Eclipse等のツールでは「master」と表記されることが多い
  • このブランチが作業ツリーと直接紐づいている
ブランチに表記されている「origin」「master」てなに?

Eclipse等のツールを用いているとよく「origin」「master」という言葉が出てきます。
「origin」というのは参照しているリモートリポジトリの名称であり、「master」はブランチ名称を表しています。
GitHub等で新規にリポジトリを作成するとデフォルトで「master」ブランチが生成されます。
リモート追跡ブランチの場合、一般的に「origin/”ブランチ名”」と表記されます。
例えば、リモートリポジトリ「master」ブランチを指す場合は「origin/master」と表記されます。
先ほど、リモート追跡ブランチリモートリポジトリと紐づいていると説明しましたが、この「origin」は紐づき先のリポジトリを示し、「master」は紐づき先リポジトリ内のどのブランチを指しているかを示しています。
また、ローカルブランチの場合、参照先はリモート追跡ブランチに固定されているため、単に「master」とだけ表記されます。
ちなみに、リモートリポジトリの名称の「origin」は表記を変更することもでます。

知っておくと便利な操作用語

リモート追跡ブランチの概要がわかったところで、さっそく「フェッチ(Fetch)」「マージ(Merge)」の動作を理解していきましょう!

フェッチ (Fetch)

  • 他人が反映したリモートリポジトリの変更履歴を、自分のリモート追跡ブランチ"のみ"に取り込む。
  • ローカルブランチは不変のため、この操作で作業ツリーに影響が出ることはない。
  • この操作を実施するにはオンラインである必要がある。

マージ (Merge)

  • フェッチ操作によって取り込まれたリモート追跡ブランチの変更履歴をローカルブランチへ取り込む。
  • オフライン状態でも操作可能。

「コミット」「プッシュ」「プル」の動作を再確認!

前回出てきた「コミット(Commit)」、「プッシュ(Push)」、「プル(Pull)」をしたとき、「リモート追跡ブランチ」「ローカルブランチ」がどう変化するのか、気になった方もいると思います。

なので「リモート追跡ブランチ」「ローカルブランチ」の概念を取り入れて、前回出てきた「コミット(Commit)」、「プッシュ(Push)」、「プル(Pull)」の動作を再度確認していきましょう!

コミット (Commit)

  • ステージされたファイルをローカルブランチのみに反映する。
  • リモート追跡ブランチは反映されない。

プッシュ (Push)

  • リモートリポジトリだけでなく、リモート追跡ブランチにも変更履歴を反映している。

プル (Pull)

  • リモート追跡ブランチローカルブランチの両方に同じ変更履歴が取り込まれる。
  • プル操作は「フェッチ + マージ」と同じ。

「フェッチ」、「マージ」ってどんな場面で使うの

先ほどプル(Pull)の動作は「フェッチ(Fetch) + マージ(Merge)」であることを説明しました。

ではプルではなく、フェッチマージを使う場面はどんなときなのか?

それは、オフライン環境でありながら最新のリモートリポジトリの変更を”参照だけ”したい場合に限られてくると思います。

しかし、僕の経験上プログラミングする上でそのような場面になるようなことはほぼないと思います。

実際僕もフェッチを使ったことがありません。
なのでフェッチ(Fetch) マージ(Merge)を使う機会は実質ないと言ってもいいでしょう!

まとめ

  • ローカルリポジトリ内は2層のブランチ構造となっている。
    • 上位層:リモート追跡ブランチ
      • リモートリポジトリと紐づいている
    • 下位層:ローカルブランチ
      • 作業ツリーと紐づいている
  • フェッチ (Fetch)
    • リモートリポジトリの変更履歴をリモート追跡ブランチへ反映する。
    • ローカルリポジトリは不変である。
  • マージ (Merge)
    • リモート追跡ブランチの変更履歴をローカルブランチへ反映する。
  • プル (Pull)
    • プル操作は「フェッチ+マージ」と同じ。
Sponsored Link

このサイトはreCAPTCHAによって保護されており、Googleのプライバシーポリシー利用規約が適用されます。