はじめに
ローカルリポジトリで変更内容をコミットして、GitHubのリモートリポジトリにプッシュして反映する方法について学習してきました。
Gitを使ってバージョン管理をするメリットの1つにbranch(ブランチ)とmerge(マージ)があります。
本記事ではこれらの基本的な部分について触れたいと思います。
branchとは
branch(ブランチ)を訳すと「枝」という意味になります。
TVゲームで何か物語を左右する選択をしなければならない場面を想像してみましょう。
Aという選択肢を選ぶのが王道だとします。
でも、Bという選択肢を選んだらこのあとの物語がどうなるのか、気になります。
この場面で、敢えてBを選択したいとなったとき、別のセーブデータを作って、物語を枝分かれさせてみればいいのです。
枝分かれ・・・・枝・・・・ブランチ!
そうです。
セーブデータを本来のラインから外して別のラインを作成して進めるのがブランチということです。
ということで、話をGitに戻します。
実は、これまで行ってきたバージョン管理は、mainブランチと呼ばれるブランチ上で行われていました。
では、セーブデータを別に作って枝分かれさせるのというのは、どんな場面でしょうか。
例えば、これまで運用してきたプログラムにバグが見つかって修正をしなければならない場合や、新しい機能を追加する場合です。このような場面ではmainブランチから枝分かれさせて作業を行います。
mainブランチに運用中のプログラムがあるとします。
ブランチを切ることで、運用中のプログラムを止めることなく同じ時間軸上で、バグの修正や新機能の追加といった作業を同時に行えることになるのです。
このようにmainブランチから枝分かれさせることを「ブランチを切る」といい、切ったブランチには名前を付けなければならないルールがあります。
例えば、bugfixだとかfeatureのような感じですね。
どうでしょうか、ブランチを切って操作するというということが想像できたでしょうか。
ブランチを操作しよう
ブランチが何者かわかったところで、Gitを操作してみましょう。 まずは、現在どんなブランチがあるか確認するコマンドです
$ git branch
実行するとおそらくmainブランチだけ表示されたのではないでしょうか。
次は、ブランチを切ってみましょう。
$ git branch <ブランチ名>
これで新しいブランチが作成できました。
本当に新しいブランチが作成されたのか $ git branch
で確認してみましょう。
新しいブランチが見事に作成されたでしょうか。
しかし、表示されたブランチを見てください。今まで使っていたmainブランチに *(アスタリスクマーク)がついていませんか?
先程のコマンドでは、ブランチを作成するだけでしかないので、作成したブランチに切り替える必要があります。
では、次のコマンドでブランチを切り替えてみましょう。
$ git checkout <ブランチ名>
ブランチが切り替わったか $ git branch
で再度確認してみましょう。
作成したブランチに*(アスタリスクマーク)が付いて、ブランチが切り替わったのが確認できたでしょうか?
でも、ブランチを切って、ブランチを切り替えてと2アクション必要なのは、面倒ですね。
2アクションを面倒と思わないならそれでいいのですが、私は面倒くさがりなので楽したいと思ってしまいます。
この2アクションをまとめるコマンドが次のコマンドです。
$ git checkout -b <ブランチ名>
ブランチを切って、切ったブランチに切り替えも同時にできて楽ちんですね!
切ったブランチのその後
新機能を作るためにブランチを切って作業をして、その作業が完了したとしましょう。
そうすると今度はmainブランチに新機能を追加する必要があります。
このことをmainブランチにmerge(マージ)するといいます。
つまりマージとは、ブランチ同士を統合するということです。
マージする手順は次の通りです。
- mainブランチに切り替える
- マージを実行
- 不要になったブランチの削除
例)feature ブランチを mainブランチにマージして、featureブランチを削除する場合
$ git checkout main $ git merge feature $ git branch -d feature
これでmainブランチに新機能を追加することができました。
思っていたよりも簡単でしたね。
このようにブランチを切ってマージしてという作業は、個人レベルではさほど重要ではないと思います。
しかし、複数人で開発をするということになると必須になります。
今のうちに練習をしておいて、来たるべき時に備えましょう!
この記事がGitに対してある種のアレルギーを持つ方の助けになれば幸いです。
では、また!