-
Git HEAD detached from XXX (git HEAD 游离) 解决办法
2017-07-28 20:13:44本文 Git 图片主要来自:图解 Git,...Git 中的 HEAD 可以理解为一个指针,我们可以在命令行中输入 cat .git/HEAD 查看当前 HEAD 指向哪儿,一般它指向当前工作目录所在分支的最新提交。 当使用 git checkout 切换本文 Git 图片主要来自:图解 Git,非常感谢!
读完本文你将了解:
什么是 HEAD
Git 中的 HEAD 可以理解为一个指针,我们可以在命令行中输入
cat .git/HEAD
查看当前 HEAD 指向哪儿,一般它指向当前工作目录所在分支的最新提交。当使用
git checkout < branch_name>
切换分支时,HEAD 会移动到指定分支。但是如果使用的是
git checkout < commit id>
,即切换到指定的某一次提交,HEAD 就会处于 detached 状态(游离状态)。HEAD 游离状态的利与弊
HEAD 处于游离状态时,我们可以很方便地在历史版本之间互相切换,比如需要回到某次提交,直接 checkout 对应的 commit id 或者 tag 名即可。
它的弊端就是:在这个基础上的提交会新开一个匿名分支!
也就是说我们的提交是无法可见保存的,一旦切到别的分支,游离状态以后的提交就不可追溯了。
解决办法就是新建一个分支保存游离状态后的提交:
具体解决操作
- git branch -v 查看当前领先多少
- 4449a91 指向的是
dev1
的最后一次提交
- 新建一个 temp 分支,把当前提交的代码放到整个分支
checkout
出要回到的那个分支,这里是dev1
- 然后
merge
刚才创建的临时分支,把那些代码拿回来 git status
查看下合并结果,有冲突就解决- 合并 OK 后就提交到远端
删除刚才创建的临时分支
查看 Log,当前 HEAD 指向本地 dev1 ,和远端 dev1 一致,OK 了!
Thanks
https://marklodato.github.io/visual-git-guide/index-zh-cn.html#detached
https://git-scm.com/docs/git-checkout#_detached_head欢迎扫描关注我的微信公众号,不定时更新我的成长及思考文章~
- git branch -v 查看当前领先多少
-
Git学习系列15 HEAD ORIG_HEAD FETCH_HEAD detached HEAD
2018-12-26 09:14:38终于重新回到了git开始的地方,探究下本地git代码仓库中.git目录。 本篇对标题中的几个概念进行简单说明。...说明HEAD其实就是指向master分支,而master中存放的就是最新的commit(40位的sha-1...终于重新回到了git开始的地方,探究下本地git代码仓库中.git目录。
本篇对标题中的几个概念进行简单说明。
1 HEAD
HEAD可以指向分支,也可以指向提交。
这里先说指向分支的情况。
下图为HEAD指向本地master分支。
查看.git目录下的HEAD
说明HEAD其实就是指向master分支,而master中存放的就是最新的commit(40位的sha-1值)。
2 ORIG_HEAD
在上图的.git目录可以看到还有一个ORIG_HEAD文件
查看内容,其实存放的也是commit。当进行一些有风险的操作的时候,如reset、merge或者rebase,Git会将HEAD原来所指向commit对象的sha-1值存放于ORIG_HEAD文件中。这里不做深入测试分析。
3 FETCH_HEAD
在上图的.git目录可以看到还有一个FETCH_HEAD文件
FETCH_HEAD表示某个branch在服务器上的最新状态。
每一个执行过fetch操作的项目都会存在一个FETCH_HEAD列表,其中每一行对应于远程服务器的一个分支。
当前分支指向的FETCH_HEAD, 就是这个文件第一行对应的那个分支。存在两种情况:如果没有显式的指定远程分支, 则远程分支的master将作为默认的FETCH_HEAD;如果指定了远程分支, 就将这个远程分支作为FETCH_HEAD.4 detached HEAD
当执行 git checkout commit的时候,也就是指向提交,会变成detached HEAD的状态。
此时查看分支的话,大概显示如下:
此时如果不留心,继续进行修改提交,可能会被git回收,从而丢失代码。最好的做法是新建一个分支,再进行代码相关操作。例如,我进行如下操作:
我切换到commit d53a,注意git的提示文字,git checkout -b new-branch-name,就能在d53acommit上新建一个分支,例如我新建了temp1分支。
-
HEAD, ORIG_HEAD, FETCH_HEAD, MERGE_HEAD标志
2017-08-31 17:59:21HEAD标志HEAD
: The current ref that you’re looking at. In most cases it’s probably refs/heads/master
当前目录下最近的一次commitFETCH_HEAD
: The SHAs of branch/remote heads that were updated during the last git fetch
从远端或分支fetch过来的标志ORIG_HEAD
: When doing a merge, this is the SHA of the branch you’re merging into.
做合并时合并后的分支MERGE_HEAD
: When doing a merge, this is the SHA of the branch you’re merging from.
合并时合并前的分支CHERRY_PICK_HEAD
: When doing a cherry-pick, this is the SHA of the commit which you are cherry-picking. -
linux命令head
2020-10-15 21:52:35linux命令head用于从头部查看文件 head 文件名 显示文件头几行(默认显示10行) head -n 20 文件名 显示文件前20行 head -n -20 文件名 显示文件最后20行linux命令head用于从头部查看文件
head 文件名 显示文件头几行(默认显示10行)
head -n 20 文件名 显示文件前20行
head -n -20 文件名 显示文件最后20行
-
git 理解 HEAD^与HEAD~
2017-12-20 22:32:34HEAD^主要是控制merge之后回退的方向 HEAD~才是回退的步数1.建立如图所示分支 2.将HEAD指针向后移动一位到原分支git checkout HEAD^ 3.将HEAD指针向后移动一位到merge分支git checkout HEAD^2 4.将HEAD... -
Swagger2 添加HTTP head参数
2017-05-09 15:19:51大家使用swagger往往会和JWT一起使用,而一般使用jwt会将token放在head里,这样我们在使用swagger测试的时候并不方便,因为跨域问题它默认不能自定义head参数。然后自己去网上找,发现国内大多数的都是写一个Filter... -
struct list_head/LIST_HEAD以及LIST_HEAD_INIT/INIT_LIST_HEAD
2018-09-27 14:26:09仅仅为struct list_head相关的两个宏: #define LIST_HEAD_INIT(name) { &(name), &(name) } #define LIST_HEAD(name) \ struct list_head name = LIST_HEAD_INIT(name) static inline void INIT... -
HEAD detached at head的处理
2017-05-06 22:25:37其实我们知道,git checkout本质上是修改HEAD里面的内容来让它指向不同分支的,而HEAD文件指向的分支就是我们当前的分支,但是有时候HEAD不会指向任何分支,严谨的说是HEAD指向了一个没有分支名字的修订版本,此时恭喜你,... -
Git HEAD & head
2013-11-14 06:12:32A head is simply a reference to a commit object. Each head has a name (branch name or tag name, etc). By default, there is a head in every repository called master. A repository can contain any number -
分离 HEAD
2018-01-14 18:14:12分离 HEAD HEAD 是一个对当前检出记录的符号引用 —— 也就是指向你正在其基础上进行工作的提交记录。 HEAD 总是指向当前分支上最近一次提交记录。大多数修改提交树的 Git 命令都是从改变 HEAD 的指向开始的。 ... -
detached HEAD
2018-09-26 10:48:56如果让HEAD文件指向一个commit id,那就变成了detached HEAD。git checkout 可以达到这个效果,用下面的命令: git checkout 1aea8d9^ laea8d9是最近的一次commit id,^指的是之前一次,因此上面的操作结果... -
Pandas中head( )函数
2019-04-04 19:23:40在用Pandas读取数据之后,我们往往想要观察一下数据读取是否准确,这就要用到Pandas里面的head( )函数,但是一直有疑问,为什么用head( )函数只能读取前五行数据。接下来给大家分析一下head( )函数原型: 1、应用... -
linux head
2017-05-15 20:08:40head命令用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容。-n<数字>:指定显示头部内容的行数; -v:总是显示文件名的头信息; -q:不显示文件名的头信息。 -
git reset --hard HEAD
2019-04-09 20:23:37git reset --hard HEAD 表示回退到当前版本,HEAD指向当前版本。如果你修改了一些代码,想去除,就可以用git reset --hard HEAD一次性去除。 git reset --hard HEAD^ 表示回退到上一个版本 lj@lj-virtual-... -
头指针head
2019-06-05 11:54:09在使用头指针head时,通常先定义head=NULL,目的是在初始化时使head有一个明确定义,head不为野指针。 例: int * head=NUll,* L; L=(LNode * )malloc(sizeof(Lnode)); head=L; 二、head->next=null 把Head... -
Git的Head
2019-02-13 15:41:34用git对项目进行版本管理的时候 用HEAD表示当前的版本 HEAD^ 表示上一个版本 同 HEAD~1 HEAD^^ 表示上上个版本 HEAD~2 HEAD~100 表示上100个版本 -
git 回退到上个版本 rollback 回滚 git reset HEAD, git 回退到上一版本
2019-06-26 09:04:35git reset --hard HEAD^ 回退到前3次提交之前,以此类推,回退到n次提交之前 git reset --hard HEAD~3 退到/进到 指定commit的sha码 git reset --hard dde8c25694f34acf8971f0782b1a676f39bf0a46 强推到... -
Git命令中HEAD^和HEAD~区别
2018-09-10 18:23:01说明 本篇文章是对Pro Git 7.1 Git 工具 - 选择修订版本 章节中 祖先引用 的总结。 git命令中HEAD^和HEAD~区别。 HEAD^+数字表示当前提交的父提交。...HEAD~(等同于HEAD^,注意没有加数字)表... -
查看git HEAD
2019-10-07 17:54:58如果想看 HEAD 指向,可以通过cat .git/HEAD查看, 如果 HEAD 指向的是一个引用,还可以用git symbolic-ref HEAD查看它的指向。 转载于:https://www.cnblogs.com/huanghuanghui/p/11397903.html... -
linux head 命令
2018-05-13 12:42:54head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾。 1.命令格式:head [参数]... [文件]..... -
git reset HEAD 与 git reset --hard HEAD的区别
2020-04-12 21:31:51git reset HEAD 是将咱暂存区和HEAD的提交保持一致 git reset --hard HEAD 是将工作区、暂存取和HEAD保持一致 测试 git reset HEAD 创建一个readme.md 的文件 创建一个commit 执行以下命令 git add ... -
head插件安装
2019-04-13 14:48:35上一节我们已经安装好了Elasticsearch,接下来我们来安装head插件,由于elasticsearch-head插件是由nodejs语言编写,所以安装elasticsearch-head前需要先安装nodejs和grunt。 首先,执行以下命令安装nodejs和grunt ... -
ElasticSearch安装Head插件
2019-03-11 18:31:54ElasticSearch安装Head插件 Head是elasticsearch的集群管理工具,可以用于数据的浏览和查询,安装过程相对来说比较繁琐,建议安装Kibana (1)elasticsearch-head是一款开源软件,被托管在github上面,所以如果我们... -
git在回退版本时HEAD~和HEAD^的作用和区别
2020-05-31 15:18:26我们在使用 Git 回退到版本的时候,可能见过这种写法 `git reset --hard HEAD~`,有时候也会遇到这种写法 `git reset --hard HEAD^`,这两个语句都是将代码库还原到上一个版本,但是只差了一个符号,他们究竟有什么... -
14-head命令
2019-04-11 12:21:05head 命令所在路径: /usr/bin/head 执行权限: 所有用户 语法: head [文件名] 功能描述: 显示文件前面几行 -n 指定行数 范例: $head -n 20 /etc/services -
Elasticsearch安装Head
2019-04-24 14:59:07Elasticsearch安装Head 1、下载nodejs 2、安装nodejs 3、测试node 4、安装grunt 5、启动Head 对人工智能感兴趣的同学,可以点击以下链接: 现在人工智能非常火爆,很多朋友都想学,但是一般的教程都是为博硕生... -
s->next=head; head=s;如何理解
2017-10-16 17:36:11s->next=head; head=s;这两句中你认为head是头结点还是头指针? 书上说的是头指针,然后这两句怎么解释? 5 LinkNode *CreateLinkList()//头插入法无头结点建立线性表 { LinkNode *head,*p,*s; int x; int z=1,n... -
head 显示文件的前几行
2019-04-29 14:40:51在linux中,可以使用head命令查看文件的前若干行。 使用方式:head filename.txt 默认显示前10行。 如果想指定显示几行,则可以 head filename.txt -n 100,即可显示前100行。 ... -
head命令用法举例
2018-07-27 08:53:27head与tail就像它的名字一样的浅显易懂,head用来显示档案的开头至标准输出中,而tail 想当然尔就是看档案的结尾。 1.命令格式:head [参数]... [文件]... 2.命令功能:head 用来显示档案的开头至标准输出中,... -
git 中 HEAD 概念
2018-04-03 20:01:31本文讲述的 是 git 命令中的 HEAD ,适用于 github ,不适用于 gerrit git-recipes 这个链接是一个比较好的git教程 本文不对git进行介绍,只是收集一些和 HEAD 相关的链接 实例 $ git branch -a dev ...
-
【数据分析-随到随学】数据可视化
-
2021年起重机械安全管理免费试题及起重机械安全管理考试软件
-
在elementui中Notification组件添加点击事件实例
-
UnitySocket异步聊天室
-
跨平台的崩溃定位工具Google Breakpad
-
【YbtOJ高效进阶 广搜-4】荆轲刺秦王
-
MFC开发简单聊天程序
-
Vue 数据绑定的原理分析
-
uniapp微信小程序实现一个页面多个倒计时
-
【数据分析-随到随学】Hive详解
-
jQuery实现图片切换效果
-
微信支付2021系列之付款码支付一学就会java版
-
antd中table展开行默认展示,且不需要前边的加号操作
-
Excel高级图表技巧
-
浅谈开发中提升工作效率的姿势
-
aliyun-java-sdk.jar
-
js实现拖拽与碰撞检测
-
智慧工地有助于建筑业长期健康发展
-
2021年裂解(裂化)工艺新版试题及裂解(裂化)工艺考试技巧
-
利用 JSON.stringify 深拷贝的弊端