Help us understand the problem. What is going on with this article?

Gitの内部の動きを知ろう ~その3~

目次

今回の確認内容

前回のコミットに対してtagをつけてみます。

git tag

以下のコマンドを実行します。

$ git tag -a v001 -m "first tag"

オブジェクトがどのように変わったかを見ていきます。
差分は以下の通りです。

├── .git
│   ├── objects
│   │   ├── 8b
│   │   │   └── e68ce70275726ea093eb5da6c1fe9c9566bd7e
│   └── refs
│       └── tags
│           └── v001

新しく追加されたオブジェクトの中身を見てみます。

$ git cat-file -t 8be68ce70275726ea093eb5da6c1fe9c9566bd7e
tag
$ git cat-file -p 8be68ce70275726ea093eb5da6c1fe9c9566bd7e
object 2deb1b0751cbfeffdc75683b2f61e476ef970640
type commit
tag v001
tagger Chapa <hoge@hoge.com> 1581461073 +0900

first tag

前回コミットした際にできたコミットオブジェクト(2deb1b0751cbfeffdc75683b2f61e476ef970640)とタグが紐づいていることがわかります。
試しに何もコミットしないでさらにタグを追加してみます。

$ git tag -a v002 -m "2nd tag, no changes"

差分は以下のようになりました。

├── .git
│   ├── objects
│   │   ├── ab
│   │   │   └── ca15c3e8b8f5db47539ad14551806eb2f57df4
│   └── refs
│       └── tags
│           └── v002

オブジェクトの中身を見てみます。

$ git cat-file -t abca15c3e8b8f5db47539ad14551806eb2f57df4
tag
$ git cat-file -p abca15c3e8b8f5db47539ad14551806eb2f57df4
object 2deb1b0751cbfeffdc75683b2f61e476ef970640
type commit
tag v002
tagger Chapa <hoge@hoge.com> 1581461574 +0900

2nd tag, no changes

新規にコミットをしていないので、v001と同じコミットオブジェクトが記載されています。
タグに関しては順序性がないので、「/refs/tags/」配下を見ても同列にv001とv002が存在し、タグオブジェクト以外に変更点はありません。

タグに対応するオブジェクトのハッシュ値は「/refs/tag/」配下のファイルを見るとわかります。

$ cat .git/refs/tags/v001
8be68ce70275726ea093eb5da6c1fe9c9566bd7e
$ cat .git/refs/tags/v002
abca15c3e8b8f5db47539ad14551806eb2f57df4

以下のgitのコマンドでも確認可能ですが、どこに何が作られるかを理解していると単純にcatでも情報が確認できます。

$ git rev-parse v001
8be68ce70275726ea093eb5da6c1fe9c9566bd7e
$ git rev-parse v002
abca15c3e8b8f5db47539ad14551806eb2f57df4

今回のおさらい

git tagを叩くと、どのコミットに対してどこにタグ情報やコミットとの関連が作られていくかがわかりました。意外とgitのコマンドがわからなくてもcatで必要な情報が見つかることもわかりました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした