gitのタグとブランチの基本操作を備忘録として書いておきます。

タグ関連

タグを作成

$ git tag < タグ名>

現在作成されているタグの確認

$ git tag -l
test
test2
example

ワイルドカードも使えます

$ git tag -l "test\*"
test
test2

タグがリンクしているハッシュ値を確認する

$ git rev-parse test
c8d5c281933cfe5c94222cb2a1b761eae7901b32

ブランチ関連

ブランチを作成する

$ git branch < ブランチ名>

現在のコミット(HEAD)からブランチが作成されます

ブランチを確認する

$ git branch
* master
  test-branch

masterはgit cloneでローカルリポジトリを作成したときに最初から作られるブランチです。 現在のブランチに*が付きます。

タグを指定してブランチを作成

$ git chekout -b < ブランチ名> < タグ名>

現在のブランチは、新しくチェックアウトしたブランチに切り替わります。

ハッシュ値を指定してブランチを作成

$ git chekout -b < ブランチ名> < ハッシュ値>

同様にブランチが切り替わります 例です

$ git checkout -b test-branch2 test2
Switched to a new branch "test_branch2"

$ git branch
  master
  test-branch
* test-branch2

$ git checkout -b test-branch3 c8d5c281933cfe5c94222cb2a1b761eae7901b32
Switched to a new branch "test_branch3"

$ git branch
  master
  test-branch
  test-branch2
* test-branch3

ブランチを切り替える

$ git checkout test-branch
Switched to a new branch "test_branch"

$ git branch
  master
* test-branch
  test-branch2
  test-branch3

ファイルを変更後、コミットせずにブランチを切り替えた場合、切り替えた先のブランチにどうファイルが存在する場合は変更が適用されます。

$ git branch
  master
* test-branch
  test-branch2
  test-branch3

(foo.phpを編集)

$ git checkout test\_branch2
M        foo.php
Switched to a new branch "test\_branch2"

切り替える前のブランチのfoo.phpには変更は残っていません。

ブランチを削除する

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

現在使用中のブランチは削除できません 例です

$ git branch
  master
* test-branch
  test-branch2
  test-branch3

$ git branch -d test-branch
Cannot delete the branch 'test_mmmm' which you are currently on.

$ git branch -d test-branch3
Deleted branch test-branch3

$ git branch
  master
* test-branch
  test-branch2

削除しようとしたブランチにHEADへマージされていないコミットがある場合には、エラーが出ます。 間違い防止のための機能のようです。-Dオプションを付ければ強制的に削除できます。

$ git branch
  master
  test-branch
* test-branch2

(foo.phpを編集)

$ git commit foo.phpinsertions(+), 0 deletions(-)

$ git checkout test-branch
Switched to branch "test-branch"

$ git branch -d test_branch2
error: The branch 'test\_branch2' is not a strict subset of your current HEAD.
If you are sure you want to delete it, run 'git branch -D test_mobile'.

$ git branch -D test_branch2
Deleted branch test_branch2.

branchの削除については、こちらもご覧ください。