見出し画像

Gitのリモート追跡ブランチを理解する

gitを使うようになってからしばらく経ちますが、gitに関する記事などではしばしばこの「リモート追跡ブランチ」についての説明が省略されているなぁと感じたので、ここにまとめておこうと思います。

この投稿では、fetch・merge・pull・push4種類のコマンドを扱いながら、「リモート追跡ブランチ」 の理解を目指します。

それぞれのコマンドについて(概要)

・git fetch
リモートリポジトリの内容をリモート追跡ブランチに反映する。
・git merge
リモート追跡ブランチの内容をローカルブランチに反映する。
・git pull
リモートリポジトリの内容をローカルブランチに反映する。
(fetch + merge と同じ)
・git push
ローカルブランチの内容をリモートリポジトリ及びリモート追跡ブランチに反映する。

画像1

もう少し詳しく説明していきます。

git fetch

git fetchではリモート追跡ブランチだけを更新するので、手元にあるソースコードはまだ変化しません。

画像2

次にコマンドの説明です。
<リポジトリ名>のところにリモートリポジトリにあるリポジトリ名を入れれば、更新するリポジトリを限定することが可能です。

git fetch <リポジトリ名>

git merge

git mergeではリモート追跡ブランチの内容をローカルブランチに反映するので、手元のソースコードも更新されます。

画像3

次にコマンドの説明です。
上の図だと、<リモート追跡ブランチ名>はorigin/masterとなります。現在いるブランチに指定したリモート追跡ブランチの内容を反映します。

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

git pull

git pullではgit fetchとmergeの操作をまとめて行います。gitの仕組みを理解する上ではあまり使わない方がいいと思います。

git push

git pushではローカルブランチの内容をリモートブランチ及びリモート追跡ブランチに反映します。変更内容はリモートリポジトリだけでなく、origin/masterにも影響することに注意しましょう。

画像4

次にコマンドの説明です。
上の図だとgit push origin masterになりますが、通常masterには直接pushはしません。代わりにmaster以外のブランチを作成し、そのブランチにpushした後、masterへマージするためにプルリクエストを作成します。

git push <リモート名> <ブランチ名>

まとめ

今回は、個人的にgitの理解に大きく影響すると感じた部分をまとめてみました。

この記事が気に入ったらサポートをしてみませんか?