当前位置: 首页 > news >正文

【Git】HEAD detached from xxx 问题及解决方案

问题背景

最近用git的时候遇到了一个问题,场景是这样的。

我有一个分支main,其中有两个commit A和B,A是最新commit,B是历史commit。我先切到B看了看之前的代码,然后切到A,并进行了一些代码修改,执行了commit和push。上述过程命令如下:

git checkout <hash-value-of-commitB>
git checkout <hash-value-of-commitA># 经过代码修改后
git commit -m "add some code"
git push origin main

当我在push的时候,发生了报错HEAD detached from <hash-value-of-commitA>

什么是HEAD detached?

参考链接:Git detached head: What is it & How to fix it?

简单来说,就是现在所在的commit不处于任何分支。比如下图:

在这里插入图片描述
除了第一个commit和最后一个commit之外,其他的commit都不处于任何分支。

但是我checkout的commit明明是最新的commit,不是在main分支上吗?为什么还是会报错呢?这里给出chatgpt的回答:
在这里插入图片描述
就是说,切到任何一个commit,都会处于detatched HEAD状态。要想回到最新的分支上,得checkout到分支名,而不是commit哈希值。

解决方案

  • 如果想保留这些改动,在历史commitB上再新建一个分支即可
  • 如果不保留,直接切到之前的分支。注意是切到分支,不是切到commit,这两者是不一样的

另外,对于第二种方案,已有的在commitB上的改动会被直接丢弃。

http://www.lryc.cn/news/211260.html

相关文章:

  • Cannot connect to the Docker
  • 校园物业报修小程序开发笔记一
  • 用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程
  • FFmpeg5.1.3编译动态库踩坑之旅(基于Linux虚拟机)
  • 【语义分割】语义分割概念及算法介绍
  • 基于RK3568高性价比全国产EMS储能解决方案(一)概述
  • 3 Go的基础语法
  • Redis之Lua脚本讲解
  • redis archive github
  • 3台Centos7快速部署Kafka集群
  • 最小栈(C++解法)
  • Python 算法高级篇:堆排序的优化与应用
  • 视频下载软件 Downie4 mac中文介绍
  • 计算机操作系统重点概念整理-第一章 计算机系统概述【期末复习|考研复习】
  • 树莓派基金会近日发布了新版基于 Debian 的树莓派操作系统
  • Web项目如何做单元测试
  • MySQL主从复制(基于GTID--事务ID方式)
  • 3.72 Command Buffer及URP概述
  • 分布式理论和分布式锁知识点总结
  • IOC课程整理-17 Spring事件
  • 大数据Flink(一百零五):SQL性能调优
  • ESP8266,手机与电脑之间的TCP通讯
  • vue的数据监听是如何实现的?
  • 埋点日志解决方案——Golang+Gin+Sarama VS Java+SpringCloudGateway+ReactorKafka
  • LeetCode 541 反转字符串 II 简单
  • 从入门到精通:深入了解CSS中的Grid网格布局技巧和应用!
  • Android Studio Giraffe 添加 maven { url “https://jitpack.io“ }报错
  • Linux C/C++ 实现网络流量分析(性能工具)
  • python门牌制作,统计某个数字出现的次数
  • 轻量封装WebGPU渲染系统示例<7>-材质多pass(源码)