我很难理解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描述的输出。
那么git describe e8a1df5f060bf7e6631554648e0abde150aedbe4的输出是(v2.3.1-2765-ge8a1df5)?但我刚查过v3.0.0?!
总之,man git-describe说:
该命令查找可从commit访问的最新标记。如果标记指向提交,则只显示标记。否则,它将标记名称后缀为标记对象顶部的附加提交数和最近提交的缩写对象名称。
因此,从上面收到的(v2.3.1-2765-ge8a1df5)输出中将这些知识应用到git submodule status:
v2.3.1“必须是可从e8a1df5获得的最新标记。v.2.3.1”顶部的提交数。e8a1df5“必须是最近提交的缩写对象名(参见man gitrevisions re: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是最新的可访问标记?这里发生了什么事?
发布于 2013-09-05 19:37:30
因此,v3.0.0作为一个轻量级标记将产生这种行为。
https://stackoverflow.com/questions/18560175
复制相似问题