gpt4 book ai didi

git - 理解 git 子模块状态输出

转载 作者:太空狗 更新时间:2023-10-29 13:38:33 24 4
gpt4 key购买 nike

我无法理解 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 输出的每一行是:

the SHA-1 of the currently checked out commit for each submodule, along with the submodule path and the output of git describe for the SHA-1.

所以 git describe e8a1df5f060bf7e6631554648e0abde150aedbe4 的输出是 (v2.3.1-2765-ge8a1df5)?但我刚刚检查了 v3.0.0?!

无论如何,man git-describe 是这样说的:

The command finds the most recent tag that is reachable from a commit. If the tag points to the commit, then only the tag is shown. Otherwise, it suffixes the tag name with the number of additional commits on top of the tagged object and the abbreviated object name of the most recent 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,并且:

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

我如何找出为什么 git describe 决定 v2.3.1 是最近的可达标签?这是怎么回事?

最佳答案

By default (without --all or --tags) git describe only shows annotated tags.

所以 v3.0.0 作为一个轻量级标签会产生这种行为。

关于git - 理解 git 子模块状态输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18560175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com