Brewall をそれ自身Homebrewで管理できる様にするためにFormulaを書いてる時に バージョン情報があるとアップデートが簡単に出来るので、 そのためレポジトリにタグ付けを初めてしてみたのでついでにメモ。
タグを付ける
SVNなんかと同じようにGitにもタグがあって 1、 特定のポイントのスナップショットを残す事が出来ます。
タグを作りたい時は、
$ git tag -a v0.0.2 -m "version 2"
こんな感じで-a
に続きタグ名を与えます。-m
はコメント。
現在のローカルレポジトリの状態から作られるので、何か変更してある場合は
commit
後に。
git tag
とするとタグ一覧が見れます。
$ git tag
v0.0.1
v0.0.2
リモートにpush
リモートに送るにはpush
に--tag
を与るだけです。
$ git push --tag
GitHubに送ると、こんな感じでタグが選べる様になります。
これでタグを作った時のスナップショットをZipで取ってこれる様になります。
タグをチェックアウト
ただタグの中身を見たい時はcheckoutすればOK 2 3 。
$ git checkout v0.0.2
Note: checking out 'v0.0.2'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later ) by using -b with the checkout command again. Example:
git checkout -b new_branch_name
HEAD is now at 05745ff... Update: brew in tap repo can be written before tap
ただ、この場合はdetached HEAD
状態で他のブランチに移ると消えてしまう状態です。
変更履歴を取って行きたい場合はこの状態から
$ git checkout -b branch_v0.0.2
などとして新たにブランチを作るか最初から
$ git checkout -b branch_v0.0.2 v0.0.2
とすればv0.0.2
のタグで初期化されたbranch_v0.0.2
というブランチが出来ます。
この時に、ブランチ名もv0.0.2
でも良いんですが、その場合は
ブランチ名とタグ名がconflictするのでその後、ブランチをrefs/heads/v0.0.2
、
タグをrefs/tags/v0.0.2
ときちんと指定してあげないと
$ git checkout v0.0.2
warning: refniname 'v0.0.2' is ambiguous.
みたいに注意されます。(一応この場合はrefs/heads/v0.0.2
を取ってきます。)
タグを削除
ローカルのタグを削除するには-d
オプションを使って
$ git tag -d v0.0.2
の様にします 4。
これをリモートに反映するにはGitHub等のリモートレポジトリがorigin
として
git remote
に登録されてるとして
$ git push origin :v0.0.2
または
$ git push --delete origin v0.0.2
とすればOK。