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

mod_aliasに関して

同一ドメインでパスによってルートディレクトを分けたい時。 この場合、apacheの設定ファイルをいじることになります。 一般的にはhttpd.confではなく*.confと言った設定ファイルを使い、エ …

no image

サーバーの過負荷の発見 メモリ使用率の調査&抽出、置換(awk,sed)コマンドについて

前回、サーバーの負荷調査について記事を書いたので、それに関するスクリプトを。 Contents1 仕様2 ソース3 解説3.1 freeコマンド3.2 awk3.3 sed 仕様 日付とメモリ使用率、 …

no image

githubのremoteリポジトリへの登録

githubにgit pushしようとしたときにエラーがでたんでちょっとメモ。 githubに登録する場合、設定が適切でないと、

など …

no image

clamAV

ウイルスソフトclamAVのインストールと使用法について Contents1 インストール1.1 CentOS61.2 CentOS72 スキャン実行の設定に関して インストール CentOS6 [c …

no image

正規表現その2

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

アーカイブ