返回介绍

HEAD

发布于 2024-09-16 00:23:11 字数 1311 浏览 0 评论 0 收藏 0

指向当前 commit

上面提到图中括号里的是指向这个 commit 的引用。

其中这个括号里的 HEAD 是引用中最特殊的一个:它是指向 当前 commit 的引用,每个仓库中只有一个 HEAD。

当前 commit 指的就是当前工作目录所对应的 commit。

上图中的 当前 commit 就是第一行中的那个最新的 commit。

每当有新的 commit 的时候,工作目录自动与最新的 commit 对应,与此同时,HEAD 也会转而指向最新的 commit。

当使用 checkout、reset 等指令手动指定改变 当前 commit 的时候,HEAD 也会一起跟过去。

当前 commit 在哪里,HEAD 就在哪里,这是一个永远自动指向当前 commit 的引用,你永远可以用 HEAD 来操作 当前 commit

指向 branch

HEAD 除了可以指向 当前 commit ,还可以指向一个 branch,当它指向某个 branch 的时候,会通过这个 branch 来间接地指向某个 commit;

当 HEAD 在提交时自动向前移动的时候,它会像一个拖钩一样带着它所指向的 branch 一起移动。

例如上图中的 HEAD -> main 中的 main 就是一个 branch 的名字,而它左边的箭头 -> 表示 HEAD 正指向它(当然,也会间接地指向它所指向的 commit)。

如果在这时创建一个 commit,那么 HEAD 会带着 main 一起移动到最新的 commit。

git commit

通过查看 log 对逻辑进行验证:

git log

最新的 commit 被创建后,HEAD 和 main 这两个引用都指向了它,而上图中的后两个引用 origin/main 和 origin/HEAD 则依然停留在原先的位置。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文