ブランチの管理
これまでにブランチの作成、マージ、そして削除を行いました。ここで、いくつかのブランチ管理ツールについて見ておきましょう。今後ブランチを使い続けるにあたって、これらのツールが便利に使えるでしょう。
git branch
コマンドは、単にブランチを作ったり削除したりするだけのものではありません。何も引数を渡さずに実行すると、現在のブランチの一覧を表示します。
$ git branch
iss53
* master
testing
*
という文字が master
ブランチの先頭についていることに注目しましょう。これは、現在チェックアウトされているブランチを意味します。つまり、ここでコミットを行うと、master
ブランチがひとつ先に進むということです。各ブランチにおける直近のコミットを調べるには git branch –v
を実行します。
$ git branch -v
iss53 93b412c fix javascript issue
* master 7a98805 Merge branch 'iss53'
testing 782fd34 add scott to the author list in the readmes
各ブランチの状態を知るために便利なもうひとつの機能として、現在作業中のブランチにマージ済みかそうでないかによる絞り込みができるようになっています。そのための便利なオプション --merged
と --no-merged
が、Git バージョン 1.5.6 以降で使用可能となりました。現在作業中のブランチにマージ済みのブランチを調べるには git branch –merged
を実行します。
$ git branch --merged
iss53
* master
すでに先ほど iss53
ブランチをマージしているので、この一覧に表示されています。このリストにあがっているブランチのうち先頭に *
がついていないものは、通常は git branch -d
で削除してしまって問題ないブランチです。すでにすべての作業が別のブランチに取り込まれているので、もはや何も失うことはありません。
まだマージされていない作業を持っているすべてのブランチを知るには、git branch --no-merged
を実行します。
$ git branch --no-merged
testing
先ほどのブランチとは別のブランチが表示されます。まだマージしていない作業が残っているので、このブランチを git branch -d
で削除しようとしても失敗します。
$ git branch -d testing
error: The branch 'testing' is not an ancestor of your current HEAD.
If you are sure you want to delete it, run 'git branch -D testing'.
本当にそのブランチを消してしまってよいのなら -D
で強制的に消すこともできます。……と、親切なメッセージで教えてくれていますね。