ブランチ
Gitには、ブランチというものがあります。
ブランチは、日本語で「枝」という意味です。
このブランチは、複数人でリポジトリを扱ったり、Gitで複雑なバージョン管理をしようとしたりすると、使う必要が出てきます。
ブランチの確認
実はすでに、Gitのリポジトリを用意した段階で、masterという名前のブランチが作成されています。ちなみに、masterという名前のブランチなので、一般的に、名前とブランチという言葉をくっ付けて、masterブランチと呼ばれます。
そして今までコミットは、そのmasterブランチにしていました。
現在のブランチは、git status
コマンドで確認することができ、実行すると、表示された内容の一番上に下記のようなものが書かれているので、そこからブランチ名を知ることができます。
On branch master
masterと表示されているので、このブランチはmasterブランチとなります。
全てのブランチを表示するには次のコマンドを実行します。
git branch
今後、ブランチを作成していった際に、現在あるブランチの一覧を知りたいときなどに使います。
ブランチの使い方
では、どのような時にブランチを使うのでしょうか。
ブランチは、実際の作業環境のようなものです。
ブランチは複数作成することができるので、ブランチの数だけ作業環境を作ることができます。
個人でのGitのバージョン管理では、masterブランチだけで良いかも知れませんが、もし複数人での使用であれば、ある一定のルールを決めてブランチを使うことが多くなります。
例えば、プログラムを例にすると、masterブランチでは、いつでもリリースすることができるようにしておき、まだ中途半端で作業中であるものは、masterブランチから作成した別のブランチにコミットをし、作業が終わったらmasterブランチにマージをするなどの方法があります。
要は、作業中のコミットはmasterブランチに含めず、masterブランチとは別のブランチを作成しそちらにコミットをして、最後にmasterブランチへマージをするということです。
ブランチとは枝なので、別のブランチを作る際に、masterブランチから枝分かれさせて作ります。そのため、masterブランチを元にブランチを作成した段階では、masterブランチと新たに作成したブランチのコミット状況は全く同じになります。
そこで、新たに作成したブランチにコミットをしていくと、ブランチ(枝)が伸びていくので、このような様子からブランチ(枝)というように呼ばれます。
そして、最後にマージという作業をするのですが、これはブランチ同士を統合してひとつのブランチにする作業です。ほとんどの場合、masterブランチに新たに作成したブランチの作業(コミット)を統合することになります。
ちなみに、このようなブランチの運用方法全般を「フロー」と言い、世の中には色々なフローがあります。
代表的なものでは、「Git-Flow」「GitHub-Flow」「GitLab-Flow」などがあります。
ブランチの作成
それでは、ブランチを作成してみましょう。
ブランチを作成する方法はいくつかあります。
最初に、現在のブランチからブランチを作成する方法を紹介します。
git branch ブランチ名
git checkout -b ブランチ名
このように、git branch
かgit checkout
コマンドでブランチを作成することができます。この方法では、git status
コマンドから確認できる現在のブランチから新たにブランチが作成されます。
git branch
とgit checkout
で作成されるブランチに違いはありませんが、ブランチの作成後にgit checkout
コマンドの方は、作成したブランチに移動します。
もし、現在のブランチからではなく、別のブランチから作成したい場合は、ブランチを移動してからgit branch
コマンドでブランチを作成をするか次のコマンドでブランチを作成します。
git checkout ブランチ名 -b 元のブランチ名
元となるブランチを指定したい場合はgit checkout
コマンドを使用します。
ブランチの移動
git checkout
コマンドでブランチを作成した場合は、新たに作成したブランチに自動的に移動しますが、git branch
コマンドでブランチを作成した場合は、コマンドで移動する必要があります。
ブランチの移動は、次のようなコマンドを使います。
git checkout ブランチ名
git checkout
コマンドで移動したいブランチを指定して実行すると、そのブランチに移動します。
作業
ブランチでの作業は普段と同じようにできます。
作業が終わったら、マージをして、元のブランチに作業を反映させるのが一般的ですが、必ずそうしなくてはならないというわけではありません。
例えば、何かをしたかったけれど、やっぱりできないとなった場合は、そのブランチでの変更(コミット)はマージしないということができ、リリースできる段階のmasterブランチに、そのような機能が含まれないようにできます。
マージの仕方は、今後説明します。
まとめ
ブランチは、Gitを代表する機能のひとつです。
今後説明するマージと合わせて、複数人での共同開発などで欠かせない機能になります。