运行git log给我这样的输出:
commit 69b6309f09365c09a2fe10f09aee801d1fae29ee (HEAD -> master, edeviserBranch)
Author: eDeviser <eDeviser@xyz.com>
Date: Mon Sep 2 09:53:07 2019 +0200
added foo
commit 59a08270fb730db259a8d5819bb585a613024d97 (origin/master, origin/HEAD)
Author: eDeviser <eDeviser@xyz.com>
Date: Mon Sep 2 09:49:50 2019 +0200
More Text
Run Code Online (Sandbox Code Playgroud)
我不明白括号内内容的含义。括号内的文字是什么意思?这是提交所基于的分支吗?HEAD -> master如果是,和origin/master之间有什么区别origin/HEAD?
如何解释git日志中的括号?
MFn*_*Fnx 11
简短回答
它是指向相应提交的指针列表。我建议您阅读有关HEAD和 的内容origin。
提交和指针
在 中git,您有提交和在这些提交之间移动的指针。分支只是一个指向提交的指针。假设你有一个分支mybranch,那么mybranch它只是一个指针。如果您在该分支上提交,指针mybranch就会移至该提交。
HEAD 指针
HEAD:HEAD指针指向您的存储库所在的当前提交。在您的情况下,它指向 commit 69b6309f09365c09a2fe10f09aee801d1fae29ee,即:您的存储库现在处于 commit 状态69b6309f09365c09a2fe10f09aee801d1fae29ee。括号中的内容是其他指针的列表,这些指针指向与 相同的提交HEAD,在您的情况下是master和edeviserBranch。从这些信息中,你可以看到master,edeviserBranch还没有出现分歧。您可能将带有文本的最后一次提交推added foo送到master,然后edeviserBranch从中创建了一个新分支master。
工作区
origingit:为远程存储库提供的默认名称。通过origin/<pointer>,您可以访问工作区域中的分支机构。工作区域是本地存储库和远程存储库之间的空间。git fetch origin将数据从远程存储库下载到本地存储库的工作区域。它不合并任何数据,只是下载数据。一个清楚工作区概念的例子:
git fetch origin # update data from remote origin.
# For example, your remote branch edeviserBranch will be downloaded to your working area
# and can be accessed from origin/edeviserBranch.
git checkout master # go to your local master branch
git merge origin/edeviserBranch # merge branch edeviserBranch from your working area
# to your local master branch
Run Code Online (Sandbox Code Playgroud)
原点/HEAD指针
origin/HEAD:工作区域中的一个指针,指向将由克隆您的存储库的人检出的默认提交。
根据输出git log,指针origin/master和origin/HEAD都指向 commit 59a08270fb730db259a8d5819bb585a613024d97。
如果您的工作区域与远程存储库不同步,并且您执行git fetch origin(并且这样做,您使用远程存储库更新您的工作区域),那么这些指针将会更改。
HEAD 记住分支位置 HEAD->master 是你工作的地方
当前分支的最新提交 如果移动(签出)分支,HEAD 位置将会改变
你所在远程仓库的位置remotes/origin/HEAD->origin/master //HEAD位置