Gitマスターへの道#3~あなたとブランチ~
こんにちは。高須です。早速ですが、皆さんは「ブランチ」って聞いたときに何を思い浮かべますか?ほとんどの方は紅茶とスコーンで優雅なひと時をすごす、あの麗らかタイムのことを思い浮かべたと思います。私もその一人です。そもそも英語にするとスペルが違くて、Gitで扱うのは枝(Branch)。今回は、複数人でGitを運用するにあたって必要不可欠なブランチ機能を学んで、あなたとわたし、それぞれの作業を円滑にしていこう!という回になります。
それでは早速やっていきましょう!
Gitにおけるブランチとは、作業内容を枝分かれさせて、複数の作業を並行して進めることができる機能のことです。例えば、一つのプログラムの中でAさんはコードのバグを修正するための編集作業をしたくて、Bさんは新しい機能を付け加えるための編集作業をしたいとき、互いの作業管理が煩雑になることによる先祖返りなどの不具合を起こさないようにしながら、同時並行で編集したいとき役に立つのがこのブランチという機能です。
リポジトリが新規で作成された時点では、[main]というブランチが作成され、そこにファイルなども保存されます。前回までの基本的な作業のスクリーンショットをみるとわかるように、ブランチの機能を使っていなかったのでそれぞれの動作はmainのブランチで行われていたことがわかります。
例えばmainのブランチに入っているファイルを編集することになった場合、直接編集するのが手っ取り早いですが、すでにローンチされてるものや、多くの人に使われているものを直接編集するのはリスクが伴います。そこで、mainのブランチに入っているファイルはそのまま、新規のブランチを作成してそっちで編集作業を進めることで、どんなバグが起こってもmainのファイル自体には影響を及ぼさないで済むのです。
ブランチで作業する流れとして、まずブランチを作成する→作業ブランチを切り替える→ローカルで作業したファイルをPushする→統合したいブランチに変更箇所を統合する(マージ)という流れになります。マージに関しては次回詳しく説明していこうと思うので、今回はブランチの概念、作りかた、マネジメントに関しても触れていけたらとおもいます。
では実際にファイルを作成して編集してみましょう!
今回はどこをどのブランチでどう編集したかがわかりやすいように、アンケート形式のファイルを作成し、回答者にそれぞれ記入してもらう形式にしました。
ここでcolorというブランチを作成して質問1にだけ答えていきたいと思います。
それでは実際にブランチを作ってみましょう!
$ git branch [branch name]
これだけで、新しいブランチがつくられます。ここで以下だけ入力して実行すると、このリポジトリ内に存在するブランチを表示してくれます。
$ git branch
自分が作ったブランチが作成されていたかを確認できましたか?ではつぎ!
作業するブランチをmainからcolorに切り替えます。
$ git checkout [branch]
右端にシアン色で書いてあるブランチの名前がmainがcolorになっていますね。これで作業中のファイルをcolorブランチで編集できるようになったということになります。
ということでアンケートに回答しましょう。
青が好きなのでBlueと記入しました。
このファイルをcolorブランチにpushしていきましょう。今回の場合は特定のブランチに対しておこなうので、pushのところだけ若干書くコードが違います。詳しい説明は省略しますが、pushしたいブランチを「上流ブランチ」に指定しないといけません。上流ブランチとは、ローカルブランチが、履歴を追跡するように設定したリモートブランチの事。詳しい説明やその他のpushのやり方などはこちらなどで詳しく知ることができます。
前回のおさらいですが、add→commit→pushの手順をお忘れなく。
$ git add [filename]
$ git commit -m "comment"
$ git push -u origin [branch]
これでcolorというブランチに色についての回答のみを編集したファイルをpushできました。
そしてmainのブランチにcheckoutで戻り、その他の質問にもひとつずつ回答し、同じやり方で、それぞれhometown、foodというブランチにpushしました。
なので現在、mainブランチのファイルは質問のみのまま、
colorブランチには好きな色が、
hometownブランチには出身地が、
foodブランチには好きな食べ物が
それぞれが編集された状態でpushされている状態です。
最初の図にならって図示するならば下記のような状態。
ここまではアンケート形式のファイルを利用しながら解説してきましたが、実際に運用するときはこんなブランチの名前や運用方式だと大混乱を招く恐れがあります。
そこで、ソフトウェア開発などの現場ではGit flowやGitHub Flowなどいくつかのワークフローで運用を行うことでよりスムーズに開発を行っているようです。参考:https://atmarkit.itmedia.co.jp/ait/articles/1708/01/news015.html
私達もGitを使う際は、少なくともチーム内でのブランチ運用のルールを明確にした上で開発を行うといいかもしれないですね。
いかがでしたか?今回はブランチを中心に解説しながら、実際に手を動かしてみました。次回はこれらをマージしていきたいと思います。
アイキャッチ画像:https://www.flickr.com/photos/japanexperterna/16144950387より www.japanexperterna.se作成