首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解git子模块状态输出

理解git子模块状态输出
EN

Stack Overflow用户
提问于 2013-09-01 15:54:54
回答 1查看 2.6K关注 0票数 8

我很难理解git submodule status的输出。我想是因为我不经常使用标签。

我在Git存储库中添加了一个子模块(您可以很容易地使用下面的3个git命令在本地复制这个模块):

代码语言:javascript
复制
/ $ 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

代码语言:javascript
复制
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输出

代码语言:javascript
复制
/ $ 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获得的最新标记。
  • "2765“必须是"v.2.3.1”顶部的提交数。
  • "e8a1df5“必须是最近提交的缩写对象名(参见man gitrevisions re:g前缀)

但这对我来说毫无意义。为什么显示v2.3.1 + 2765提交而不是v3.0.0?毕竟,我确实查看了v3.0.0,并且:

代码语言:javascript
复制
bootstrap/ $ git tag --contains `git rev-parse HEAD`
v3.0.0

我如何找出为什么git describe决定v2.3.1是最新的可访问标记?这里发生了什么事?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-05 19:37:30

默认情况下(没有--所有标记或-标记),git描述只显示带注释的标记。

因此,v3.0.0作为一个轻量级标记将产生这种行为。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18560175

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档