为什么我的 git 日志输出在使用远程时同时显示 origin 和 origin/master、origin/HEAD。这些条目对我来说似乎是多余的

Why does my git log output show both origin and origin/master, origin/HEAD when using a remote. These entries seem redundant to me

我正在研究 git 来自 3.1 Git Branching - Branches in a Nutshell

的分支概念

我正在玩虚拟存储库。

git log --oneline --decorate 给出以下输出。

$ git log --oneline --decorate
d0006a6 (HEAD, origin, tag: Test1, origin/master, origin/HEAD, master) Minor change 
1437545 Minor change
69a948a Added Makefile
617ffeb Spell correction
6bf9b3f First commit
$ git branch 
* master
$ git remote --v
origin  /home/adil/work/git/repo/ (fetch)
origin  /home/adil/work/git/repo/ (push)

我不清楚有多个 origin 和 master 条目。喜欢 origin, origin/master, origin/HEAD, master

URL 中的样本输出给出:

f30ab (HEAD, master, testing) add feature #32 - ability to add new

同样,我希望输出为:

d0006a6 (HEAD, tag: Test1, master) Minor change

一件事可能是不同点,在我们的例子中,它有远程。所以我认为这就是 origin 即将到来的原因,但为什么 origin,origin/master,origin/HEAD 3 个额外的条目?

这是您必须了解的有关 git 的基本知识。

  • origin 是您的遥控器。它可以命名为任何其他名称,但主要遥控器按照约定命名为 origin

  • origin/master 是远程 origin 中的主分支或主分支。同样,名称 master 只是约定俗成,可以是任何其他名称。

  • origin/HEAD 是您的 git 当前指向的任何地方。如果你有多个分支,比如 master 和 develop,你可以通过 checkout 来开发。实际上,该动作将指向 HEAD 进行开发。可以像 git 命令中的任何其他分支一样使用 HEAD。它只是指向您当前所在分支的指针。

编辑

可能是我理解错了,所以再解释一下

显示这三个是为了让您了解我上面解释的三件事的状态。

  • origin/HEAD at a commit 告诉你 default branch of origin 指向那个 commit
  • master 告诉你你的本地回购是在那个特定的提交
  • origin/master 告诉您这些更改已推送到远程,并且您远程中的 master 分支已与您的本地存储库保持同步

如果您没有将更改推送到远程仓库,origin/HEADorigin/master 将位于最后推送到远程仓库的提交处