7

の出力を理解できませんgit submodule status。タグをあまり使わないからだと思います。

サブモジュールを Git リポジトリに追加しました (以下の 3 つのコマンドを使用して、これをローカルで簡単に複製できgitます)。

/ $ git init
/ $ git submodule add https://github.com/twbs/bootstrap.git
Cloning into 'bootstrap'...
## Output abridged ##
/ $ git submodule status
93694898838b479d2806c53c827847f724312bcc bootstrap (v2.3.1-2965-g9369489)    
/ $ cd bootstrap/
bootstrap/ $ git rev-parse HEAD
93694898838b479d2806c53c827847f724312bcc

私はチェックアウトしましたv3.0.0

bootstrap/ $ git checkout v3.0.0
Note: checking out 'v3.0.0'.
## Tells me about the detached HEAD ##
HEAD is now at e8a1df5... remove dumb validation reports
bootstrap/ $ cd ..
/ $ git commit -a -m 'Added submodule and changed its checked out commit'

の出力git submodule status:

/ $ git submodule status
e8a1df5f060bf7e6631554648e0abde150aedbe4 bootstrap (v2.3.1-2765-ge8a1df5)

参照されているコミット ( e8a1df5) は理解できますが、タグがわかりにくいです。出力man git-submoduleの各行は次のとおりです。git submodule status

各サブモジュールの現在チェックアウトされているコミットの SHA-1 と、サブモジュールのパスおよび SHA-1 の git describe の出力。

の出力git describe e8a1df5f060bf7e6631554648e0abde150aedbe4(v2.3.1-2765-ge8a1df5)? しかし、私はちょうどチェックアウトしましたv3.0.0?!

とにかく、man git-describeこう言います。

このコマンドは、コミットから到達可能な最新のタグを見つけます。タグがコミットを指している場合、タグのみが表示されます。それ以外の場合は、タグ付けされたオブジェクトの上に追加のコミットの数と最新のコミットの省略されたオブジェクト名をタグ名の末尾に追加します。

したがって、この知識を上で受け取った出力(v2.3.1-2765-ge8a1df5)から適用します。git submodule status

  • " v2.3.1" は到達可能な最新のタグでなければなりませんe8a1df5
  • "2765" は " " のコミット数でなければなりませv.2.3.1
  • " e8a1df5" は、最新のコミットの省略形のオブジェクト名でなければなりません ( man gitrevisionsre:gプレフィックスを参照してください) 。

しかし、これは私には意味がありません。v2.3.1ではなくプラス 2765 のコミットが表示されるのはなぜv3.0.0ですか? 結局、私はチェックアウトしましたv3.0.0、そして:

bootstrap/ $ git tag --contains `git rev-parse HEAD`
v3.0.0

それが最新の到達可能タグであるとgit describe判断した理由を調べるにはどうすればよいですか? v2.3.1何が起きてる?

4

1 に答える 1