#コーディング
Gitのブランチ切ってみた

明けましておめでとうございます。2018年ですね。
 
年末から社内と家の乾燥が悩みです。
クリスマスにサンタさんが加湿器を持ってきてくれることを期待していたのですが、良い子ではなかったようです。
残念です。
 
バージョン管理によく使われますよねGit。弊社でも導入しています。
今回はディレクターというポジション上触ったことのなかったGitの「ブランチ」に、ちょっとだけ触ってみました。
※初ブランチなので初心者向けとなります。尚、GUIクライアントはSourcetreeを使用しています。
 
 

ブランチとは

Gitで複数の作業者が作業する場合、同時に機能の追加や修正作業をすることがあります。
ブランチとは、簡単に言うとこの複数の作業をそれぞれ独立して進行させ、最終的にmasterへ合流させる機能のことです。
ブランチ(枝)の名前のごとく、master(幹)から派生させて伸びていく作業フローになります。
 
 

とりあえず新しいブランチを作ってみる

早速Sourcetreeから新しいブランチを作ってみます。
「とりあえず新しいブランチを作ってみる」の説明画像1
 
画面上のブランチをクリック。
 
「とりあえず新しいブランチを作ってみる」の説明画像2
 
名前を付けてあげましょう。
今回はmasterから分岐させるので、チェックは一番上に。
 
「とりあえず新しいブランチを作ってみる」の説明画像3
 
左側のメニューに「master」と「testbranchA」ができました。ふむふむ。
これで枝ができました。
 

とりあえずどっちも更新してみる

では枝を伸ばしてみましょう。
と、ここで疑問が浮かび上がります。
ブランチ変更するとローカルリポジトリはどうなるんだ…?
 
見てみましょう。
先程の左側のメニューをダブルクリックすると、任意のブランチに切り替えることができます。
「testbranchA」を選択してリモートリポジトリを開きます。
 
「とりあえずどっちも更新してみる」の説明画像1
 
これがもとの内容です。(文章はキニシナイ方向で)
これを書き換えて、保存。
 
「とりあえずどっちも更新してみる」の説明画像2
 
「testbranchA」を選択した状態で、コミット、プッシュしておきます。
 
「とりあえずどっちも更新してみる」の説明画像3
 
メッセージの前に、「testbranchA」の名前がついています。
今度は左側のメニューから「master」を選択、ローカルリポジトリをのぞいてみます。
 
「とりあえずどっちも更新してみる」の説明画像4
 
おお!!!変更されてない!!!
ということは、左側のメニューからブランチをダブルクリックで切り替えるだけで、ローカルも選択ブランチに対応してくれるみたいですね。
ブランチすごい。既にすごい。
 

とりあえず分けたからくっつけてみたくなる

現状を整理してみます。
・「master」から「testbranchA」を派生させる
・「testbranchA」を更新
・更新後「master」を確認したところ、変更はされていなかった
つまり、「master」と「testbranchA」で別々に作業が進んでいることになります。
 
では、別々に進んでいる作業をくっつけるとどうなるのか気になりますね。なるはずです。
くっつけてみました。
ブランチをくっつけるには、どうやらマージという機能を使うらしいです。
 
「とりあえず分けたからくっつけてみたくなる」の説明画像1
 
masterを選択した状態で(くっつける幹を選択しておきましょう)上メニューからマージを選択。すると、
 
「とりあえず分けたからくっつけてみたくなる」の説明画像2
 
どのブランチのどの部分を取り込むか聞かれます。
更新後の「testbranchA」を選択。OK。
これでくっつくのかな…とわくわくしていると、
 
「とりあえず分けたからくっつけてみたくなる」の説明画像3
 
なんか出てきました。なんだこの「!」は…。
と、よくよく考えると、成功するはずがないことがわかります。
 
別々の作業ですが、今回「master」と「testbranchA」で更新したのは、全く同じ個所です。
これをくっつけようとしても上手くいくはずがありません。
要するにGitさんは「master」の変更を採用するか、「testbranchA」の変更を採用するかわかりません、というSOSを出しているみたいです。
ちなみに右上の、
 
「とりあえず分けたからくっつけてみたくなる」の説明画像4
 
<<<<<<<headの部分から=======の部分が自分の(今回の場合はmasterの)コード
=======から>>>>>>>>testbranchA の部分が相手の(今回の場合はtestbranchAの)コードです。
どちらを採用するか指示を出します。
 
「とりあえず分けたからくっつけてみたくなる」の説明画像5
 
作業ツリーのファイルで「!」が出ている部分を右クリック、競合を解決、から
自分(mine)の変更内容で解決、またはあいて(theis)の内容で解決するのか選びます。
今回は「master」に合わせます。
これで分岐していたルートが1本に戻ります。
 

結論:やっぱりブランチってすごい

ブランチすごいですね。使いこなせば複数ブランチを分岐させてそれぞれ良い部分をマージ、また変更時は分岐、などなど
いろんなことができそうです。
今回はほんとにさらっと試してみただけだったので、もう少し使いこなせるように調べてみようと思います。
 

CONTACT

この度は当社へご興味お持ちいただき
ありがとうございます。
Webに関するお悩みございましたら、
是非一度お気軽にご相談ください。
平日10:00~19:00