Git
Chapters ▾ 2nd Edition

3.3 Git のブランチ機能 - ブランチの管理

ブランチの管理

これまでにブランチの作成、マージ、そして削除を行いました。 ここで、いくつかのブランチ管理ツールについて見ておきましょう。 今後ブランチを使い続けるにあたって、これらのツールが便利に使えるでしょう。

git branch コマンドは、単にブランチを作ったり削除したりするだけのものではありません。 何も引数を渡さずに実行すると、現在のブランチの一覧を表示します。

$ git branch
  iss53
* master
  testing

* という文字が master ブランチの先頭についていることに注目しましょう。 これは、現在チェックアウトされているブランチ (HEAD が指しているブランチ) を意味します。 つまり、ここでコミットを行うと、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 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 fully merged.
If you are sure you want to delete it, run 'git branch -D testing'.

本当にそのブランチを消してしまってよいのなら -D で強制的に消すこともできます。……と、親切なメッセージで教えてくれていますね。