HEAD
指向当前 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论