Gitを使った分散開発管理7 – ブランチとタグを使う

2011.07.27

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ブランチを使ってみる

今回はブランチとタグについてご紹介します。
ブランチとは、ある時点のコミットから別の履歴を派生させたものを指します。
Gitではあらゆるものがブランチとして扱われ、
デフォルトのブランチは「master」という名前のブランチです。

では、現在リポジトリにあるブランチを表示してみましょう。

$ git branch
* master

git branchコマンドは、自分のリポジトリにあるローカルなブランチが表示されます。
-rオプションをつければ、後述するリモートブランチを表示し、-aオプションをつければすべてのブランチを表示します。
現時点ではローカルのmasterブランチが1つだけ表示されました。
ブランチの横にある*は、現在選択されているブランチを示しています。
ではmasterブランチから派生させた、 「test_branch」を作成しましょう。

$ git branch test_branch

$ git branch
* master
  test_branch

git branch <ブランチ名>で、現在選択しているブランチから新たなブランチを作成します。
git branch <作成するブランチ名> <派生元ブランチ名>で、起点となるブランチの指定も可能です。

masterブランチのhello.htmlを何か変更して保存、addとcommitを実行してみてください。
そして、作業ツリーをいま作成したtest_branchに切り替えてみましょう。
ブランチの切り替えはgit checkoutコマンドを使用します。

$ git checkout test_branch
Switched to branch 'test_branch'

$ git branch
  master
* test_branch

ブランチを切り替えると、(hello.htmlを開いていれば)ファイルが変更された旨のメッセージが表示されます。
開き直してみると、ファイルの変更が元に戻っています。(ブランチ作成時点でのファイルになっています)
そして、現在選択されているブランチがtest_branchであるのがわかります。
(いま試しにコミットした履歴を消しておきたい場合は、git reset --hard HEAD^としておきましょう)
ブランチの作成と切換えを一度に行いたい場合は

git checkout -b <新しいブランチ> <派生元ブランチ名>

とします。<派生元ブランチ名>を省略すれば現在のブランチを指定したことになります。

ブランチは名前の変更や削除もでできます。名前を変更するには、

git branch -m <変更元ブランチ名> <変更先ブランチ名>

と-mオブションをつけます。変更先の名前はユニークなものでなければいけません。
-Mオプションをつけると、ブランチ名が同じだった場合に強制的に上書きされてしまうので注意してください。

ブランチの削除削除は-dオプションを使用します。

$ git branch -d <ブランチ名>

-dオプションだと、ブランチがマージされている場合のみ削除が可能です。
マージしていなくても強制的にブランチを削除したい場合、-Dオプションを使用します。

タグを使ってみる

タグを使用すると、リポジトリに対して任意の時点で印をつける事ができます。
Gitのタグはブランチとは違い、変更を加えることができません。
タグを付けた時点へ戻る、タグからブランチを作成する、などといった使い方をします。
タグをつけるには、git tagコマンドを実行します。現在のmasterブランチにタグをつけてみましょう。

$ git tag release_1.0

$ git tag
release_1.0

git tag <タグ名>で現在のブランチの直前のコミットに対してタグをつけます。ここではrelease_1.0という名前のタグを作成しました。
また、git tag <タグ名> <ブランチ名>とすれば、指定したブランチの最後のコミットからタグを作成します。
タグの一覧を表示するにはgit tagと入力します。
タグを削除したい場合は、git tad -d <タグ名> とすればタグを削除することが出来ます。

タグの主な用途として、タグからブランチを作成するという用途があります。
先ほど作成したrelease_1.0タグからブランチを作成してみましょう。
release_1.0タグに対してチェックアウトしてみてください。

$ git checkout release_1.0
Note: checking out 'release_1.0'.
・・・・・
HEAD is now at 1346355... add Git Home Link

$ git branch
* (no branch)
  master
  test_branch
  
$ git checkout -b test_branch_from_release_1.0
Switched to a new branch 'test_branch_from_release_1.0'

$ git branch
  master
  test_branch
* test_branch_from_release_1.0

タグをチェックアウトしたあと、git branchを実行してみると、どこのブランチも選択されていないことがわかります。
次に、git checkout -b <ブランチ名>として、タグからブランチを作成しています。
もっと楽にタグからブランチを作成したい場合、普通にブランチを作成するように、

$ git checkout -b <新しいブランチ名> <タグ名>

とすればタグからブランチを作成し、そのブランチを選択できます。
タグを作成したあと、その元になったブランチを削除してもタグからブランチを復元できるので、不要なブランチは削除して問題ありません。

タグの基本的な使用方法は以上です。
これ以外にも、過去のコミットに対してタグをつけたり、タグに署名をつけたりもできます。詳しくはGitのリファレンスを確認してみてください。

さて、今回はブランチとタグの基本的な使い方をご紹介しました。
次回はブランチのマージ機能を使用してみる予定です。