当前位置:   article > 正文

git里HEAD、Detached HEAD、origin/HEAD、FETCH_HEAD、ORIG_HEAD都是干啥的

detached head

原文:开发者社区> 越前君> 细读 Git | 让你弄懂 origin、HEAD、FETCH_HEAD 相关内容
读书笔记:担心大佬文章搬家,故整理此学习笔记

HEAD                   跟「本地分支」相关
Detached HEAD          是一种特殊状态的 HEAD
origin/DEAD            跟「远程分支」相关
FETCH_HEAD             跟 git fetch 操作相关
ORIG_HEAD              跟git reset、 git merge、git  reset 等「危险操作」相关
  • 1
  • 2
  • 3
  • 4
  • 5

HEAD:HEAD是一个引用,指向当前分支最新Commit-ID

在这里插入图片描述

什么操作会影响 HEAD?

git commit 
git checkout 
git reset 
  • 1
  • 2
  • 3

Detached HEAD 称为「游离 HEAD」

一般情况下,我们的 HEAD 会指向某个分支某个Commit-ID。但是 HEAD 偶尔会发生「没有指向某个本地分支」的情况,这种状态的 HEAD 称为 detached HEAD

以下情况,就可能会出现 detached HEAD

1・ 使用 git checkout 跳转至某个 Commit-ID,而这个 Commit-ID 刚好目前没有分支指向它。当我们切换至其他分支时,这个 (HEAD detached at e0c619c) 临时分支是会被干掉。可以使用 git switch -c <new-branch-name> 命令来创建一个新分支来指向该 Commit-ID。
在这里插入图片描述在这里插入图片描述
2・ Rebase 的过程其实也是处于不断detached HEAD 状态 。
3・ 切换至某个远程分支的时候。
在这里插入图片描述

origin/HEAD:一般情况下origin/HEAD 总是指向远程仓库的「默认分支」

假设我们的远程默认分支为 main。那么远程仓库在本地的副本origin/HEAD 就是相当于 origin/main
在这里插入图片描述

修改 origin/HEAD 的命令:拓展请转阅 :git 常用命令 修改远程仓库默认分支

ORIG_HEAD

当我们进行了一些「危险操作」时,比如 git resetgit mergegit rebase (❌ git commit 不会)等操作时,git 会将当前 HEAD 指向的 Commit-ID 原值保存至 ORIG_HEAD 文件内。这样的话,假如我们执行了一些「误操作」时,可以利用 git reset --hard ORIG_HEAD 回退至上一步。
在这里插入图片描述

执行了一些「误操作」时,可以利用 git reset --hard ORIG_HEAD 回退至上一步
在这里插入图片描述

FETCH_HEAD

FETCH_HEADgit fetch 有关。
FETCH_HEAD 存的是分支在远程仓库上最新commitId
拓展请转阅 :git fetch 、git fetch origin、 git fetch origin master区别
拓展请转阅 :git fetch时 FETCH_HEAD和.git\refs\remotes\origin会有哪些变化

参考

拓展:Git常用命令汇总

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/819221
推荐阅读
相关标签
  

闽ICP备14008679号