skillup

技術ブログ

Git サーバー・ネットワーク

Gitのブランチについて

投稿日:2015年12月11日 更新日:

ちょっといろいろと触っているGitに関して。

前回は作業ディレクトリ、インデックス、コミットについて説明したのですが、今回はブランチについて行います。

ブランチとは?

訳すと枝になるのですが、Gitでいうと「ある履歴を管理した1つの流れ」とでもいえるでしょうか。

branchなんて全く意識しなくてもgitでadd,commitした瞬間にmasterというディフォルトのブランチができます。

そしてGitでずっと1本の履歴で開発してきたとして、実験的な機能を追加させたい場合は別の履歴をつくることになります。

こういった行為をブランチを作る、といい、上記のケースの場合、2本のブランチを作ることになります。

ブランチを作っておけば、これを切り替えることで1つのディレクトリの中で通常の開発で使うソースと様々な機能を実験的に追加したソースを混合させることができるわけです。

ブランチには三種類ある

ところがgitのbranchといっても一筋縄ではいかないんですよ。

例えばmasterだけのbranchを考えてみても実は3種類あります。

ローカルブランチ

一番わかりやすいのはローカルブランチでしょうか。

普段作業ディレクトリ、インデックス、コミットを行った場合、このコミットの記録が直接記録されているものがローカルブランチですね。

いわばローカルの普通のブランチとでもいえばいいのでしょうか。

リモートブランチ

その次のリモートブランチですが、これはリモートのリポジトリにあるブランチのことです。

リモートは当然物理的に離れたところにあるブランチですので、ローカルにコミットしただけではリモートには反映されません。

ローカルのコミットを反映させたければgit push 、逆にリモートの変更を取り込みたければgit pull(getch)が必要になってきます。

追跡ブランチ

そしてなにより、わかりにくいのがこの追跡ブランチです。

実はリモートの変更を調整する窓口(?)のようなものです。

gitではリモートの変更を取り込むときに、いきなり変更を反映させることもできますが、一時的に別の場所に変更履歴をとりこんでおき、差分をみてからとりこむ、ということもできます。

前者のいきなりとりこむのがgit pullであり、後者がgit fetchになります。

この一時的に変更を取り込んだ時に変更が反映されているのが追跡ブランチになります。

svn→gitへの移行などを行った場合には、追跡ブランチが先にでき、ここからローカルブランチを作る必要があります。

git branchの見方

例えばgit branch -aとなったときに下記のような一覧が現れます。

まずremotesがついていないものは普通のローカルブランチです。

この場合、masterがローカルブランチで※がついているのは現在参照をしているブランチという意味です。

次の remotes/origin/master というのが追跡ブランチのことです。

ちなみに remotes/origin/HEADorigin/master というのは現在のHEADのbranchを指します。

参考リンク

Gitのリモートブランチと追跡ブランチは違うよ

Git超絶まとめ

3.5 Git のブランチ機能 – リモートブランチ

追跡ブランチ (tracking branch) というブランチが何なのか調べた

-Git, サーバー・ネットワーク
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

CSRF(クロスサイト・リクエスト・フォージェリ)

Contents1 CSRF(クロスサイト・リクエスト・フォージェリ)とは?2 被害3 対策4 参考(トークンチェック) CSRF(クロスサイト・リクエスト・フォージェリ)とは? ウェブサイトの中には …

no image

SSHのfinger printに関して

今まで何気なくやっていることをあまり実は理解していない・・なんてことが多いもんで、最近は復習の必要性を感じています。 今回のお題はSSHのfinger printです。 初めてSSH先に接続するときに …

no image

Amazon SESについて(Route53登録→SESで受信→S3で保存)

本日はAWSのSESのメモ。 2019年はJavaScriptとAWSを勉強する、と心に決め、JavaScriptの方は色々勉強しましたが、AWSの方が手付かずでした。 インフラ系はここ2年ぐらい進歩 …

no image

正規表現その2

10/28に書いた正規表現に関しての追記です。 Contents1 覚えておきたいメタ文字2 留意点 覚えておきたいメタ文字 よく出るメタ文字の復習です。 メタ文字 メタ文字の説明 [] いずれかの1 …

no image

Vagrantでのフォルダ共有

Contents1 vagrantとホストOSのフォルダの共有2 ネットワークアダプタ設定3 任意のディレクトリをマウント vagrantとホストOSのフォルダの共有 ディフォルトではvagrantは …