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

vagrantでサーバーの状態を保存(snapshot)

上司がAnsible(構成管理ツール)のサンプルをくれたのですが、試そうにもまっさらなサーバーを用意しないといけません。 サーバー環境を新規に契約するのは面倒なのでvagrantで当然考えています。 …

no image

PHPのheroku(ヘロク)へのデプロイ

有名なPaasのサービスであるherokuをちょっといじったのでその時のメモなどを。 Contents1 アカウント開設2 Heroku | Cloud Application Platform3 デ …

no image

AWSの監視システムについて

AWSでシステム内の監視を行うサービスについて少し触ったのでまとめておこうと思います。 Contents1 監視系のサービス1.1 CloudTrail1.2 GuardDuty1.3 AWSConf …

no image

yumとrpmについて

centOSのカーネルのバージョンアップで時間があるのでブログを更新。 redhat系ではソフトウェアをインストールするときにyumかrpmのコマンドを使うと思います。 私も日頃、両方使っているのです …

no image

シンボリックリンクについて

えー見ることは多かったんですが、自分で使うことはなかったシンボリックリンクについて。 Contents1 シンボリックとは?2 使い方 シンボリックとは? 簡単にいうとショートカットみたいなものです。 …

アーカイブ