🏹
Gitコマンド入門::Gitオブジェクト(update-ref,TAG)第五十六回
みなさんこんにちは! 今回もGit本家のサイトを参考にして進めていきますね。
今回は、update-ref コマンドで前々回と同じですが、実際に操作するのは、タグです。ここまで何回か、git tag コマンドを取り扱ってきましたど、詳細な説明や学習はなかったと思いますので、合わせていろいろ試して行きましょう!
前回、第五十五回の記事はこちらから!
git本家本元の情報はこちらから!
今日の課題も前回同様、ここを参考にしています!
10.3 Gitの内側 - Gitの参照
軽量 (lightweight) 版と、注釈付き (annotated) 版!
タグには2つのタイプがあり、簡易タイプと、注釈付きの通常タイプですね。
私の環境はこんな感じになっているので、514ff38 にまずは、簡易版のタグを作成してみますね。
$ git log --oneline
1e3f489 (HEAD -> test, origin/master, master) third commit
514ff38 second commit <!-- ここに簡易のタグ、v1.0
8cab88d first commit
git update-ref refs/tags/v1.0 514ff38
$ git update-ref refs/tags/v1.0 514ff38
$ cat .git/refs/tags/v1.0
514ff38588f46b1459da95dc7ce671d3209c440a
// refs/tags/v1.0 タグファイルが出来ました。
// ファイルの中身は、コミットのハッシュ値のみ
1e3f489 (HEAD -> test, origin/master, master) third commit
514ff38 (tag: v1.0) second commit <!-- ここに表示されました!
8cab88d first commit
まずは、軽量 (lightweight) 版のタグが作成されましたね! タグ名が、そのままファイル名になって、中身はいつものハッシュ値です。ということで、linuxコマンドのechoで強引に作ってみましょうか?(苦笑)
echo "514ff385~" > .git/refs/tags/v2.0
$ echo "514ff38588f46b1459da95dc7ce671d3209c440a" > .git/refs/tags/v2.0
// 実際のハッシュ値は、40文字で設定してください!
// 省略すると、正常に動作しません。というかタグとして認識しないですね。
$ echo "514ff38588f46b1459da9" > .git/refs/tags/v2.0_short
// 実際に、20文字程度で作成してみます!
$ git tag
v1.0
v2.0
// v2.0_short は認識されていませんね。
$ find .git/refs/tags -type f
.git/refs/tags/v1.0
.git/refs/tags/v2.0
.git/refs/tags/v2.0_short // ファイルは作成されても!
$ cat .git/refs/tags/v2.0_short
514ff38588f46b1459da9 // 40文字を指定しないとダメですね。
// では、一度削除して、git tagコマンドで作成すると!
$ rm .git/refs/tags/v2.0_short
$ git tag v2.0_short 514ff385
$ git tag
v1.0
v2.0
v2.0_short // <!-- ちゃんと、作成されています!
$ cat .git/refs/tags/v2.0_short
514ff38588f46b1459da95dc7ce671d3209c440a
// 中身は、40文字のハッシュ値です。
// git側で、しっかり補記してくれるんですね。
$ git log --oneline
1e3f489 (HEAD -> test, origin/master, master) third commit
514ff38 (tag: v2.0_short, tag: v2.0, tag: v1.0) second commit
8cab88d first commit
// ローカルtestブランチも確認!
$ git log --oneline test
1e3f489 (HEAD -> test, origin/master, master) third commit
514ff38 (tag: v2.0_short, tag: v2.0, tag: v1.0) second commit
8cab88d first commit
ぐだらない実験も同時にやってみましたけど、みなさんは、いかがでしょうか?
毎度の事ですが、細かいところまで突っ込んでいくと、これが不思議と、タグについて詳しくなった気がしますよね~ ほんと、どうでもよい仕様確認ですけど・・・(苦笑)
今回のまとめ
軽量 (lightweight) 版、簡易版のタグは、ほんとシンプルなテキストファイルと、その中身はいつものハッシュ値ですね。git で普段、ブランチとかタグを扱っていると、なんだか敷居が高いイメージを持つのですが、ほんと只の妄想でしたね。実際は、とても単純な仕組み、それを一度でも知ってしまうと、胸も、す~っとして気持が落ち着きます!
それでは、今回はここまで、お疲れ様でした!
Discussion