在git的提交记录中,“HEAD -> branch,origin/branch”是什么意思?

4

我正在尝试理解git log 命令的输出。通常情况下,我会看到HEAD指向一个特定的分支,但是当HEAD似乎指向本地分支和远程分支(HEAD -> branch, origin/branch)时,我感到困惑。

我尝试在网上搜索答案,但我甚至不确定该如何提问,而且显示出来的结果也与此无关。

git log
commit 3b64cc50d6fe262d007853774689e8ad58e0f2ae (HEAD -> internal-env-board-david-fix, origin/internal-env-board-david-fix)
Author: user <user_email>
Date:   Some_Date

    Added build flag to platform.ini file: -D UAVCAN_CPP_VERSION=UAVCAN_CPP11

当我运行上述命令git log时,我不知道(HEAD -> internal-env-board-david-fix, origin/internal-env-board-david-fix)的含义。通常,HEAD只指向一个分支,但在这里它似乎指向本地分支和远程分支。你知道为什么吗?
2个回答

5

Pro Git书说:

Git如何知道你当前在哪个分支?它保留了一个特殊的指针,称为HEAD......在Git中,这是指向你当前所在的本地分支的指针。在这种情况下,你仍然在主分支上。

HEAD指向特定的分支,但git log命令也会显示远程分支与你的本地分支的关系。在这种情况下,两个分支在相同的提交处对齐。但并不总是这样。所有这些都在第三章中用图表进行了很好的描述。


0

(HEAD -> internal-env-board-david-fix, origin/internal-env-board-david-fix) 是由 --decorate[=short|full|auto|no] 主要控制的输出。该输出意味着“显示的任何提交的引用名称”。如果没有给出,则默认使用 --decorate=short。要隐藏输出,请使用 --no-decorate。要过滤输出,请使用 --decorate-refs=<pattern>--decorate-refs-exclude=<pattern>。要查找所有这些引用,我们可以使用 git for-each-ref --points-at=<commit>

在您的情况下,origin/internal-env-board-david-fixHEAD没有直接关联。 internal-env-board-david-fixorigin/internal-env-board-david-fix都直接指向3b64cc50d6fe262d007853774689e8ad58e0f2ae,而HEAD仅指向internal-env-board-david-fix。换句话说,HEAD间接指向3b64cc50d6fe262d007853774689e8ad58e0f2ae。符号->表示间接引用。使用cat .git/HEAD命令,它会打印ref: refs/heads/internal-env-board-david-fix
HEAD--->internal-env-board-david-fix--->3b64cc50d6fe262d007853774689e8ad58e0f2ae
origin/internal-env-board-david-fix------^

如果我们运行git checkout 3b64cc50d6fe262d007853774689e8ad58e0f2ae以进入分离 HEAD 状态,则修饰将是(HEAD,internal-env-board-david-fix,origin/internal-env-board-david-fix),标记->会消失。文件.git/HEAD的内容将变为3b64cc50d6fe262d007853774689e8ad58e0f2ae。现在,HEAD和其他两个分支都直接指向3b64cc50d6fe262d007853774689e8ad58e0f2ae
                        HEAD--->3b64cc50d6fe262d007853774689e8ad58e0f2ae
internal-env-board-david-fix-----^    ^
origin/internal-env-board-david-fix---|

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接