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

【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.kler.cn/news/109004.html

相关文章:

  • Hive创建分区表并插入数据
  • bat文件学习
  • 基于STM32的示波器信号发生器设计
  • LeetCode 917 仅仅反转字母 简单
  • GnuTLS recv error (-110): The TLS connection was non-properly terminated
  • C#学习相关系列之多线程(七)---Task的相关属性用法
  • 算法训练|数据流中的中位数
  • Visual Studio Code的下载与安装
  • 电脑提示由于找不到vcruntime140.dll文件,教你四个解决方案
  • 中颖单片机SH367309全套量产PCM,专用动力电池保护板开发资料
  • Postgresqlddl在事务中可以回滚,truncate时relfilenode在当前会话会改变
  • Linux命令解压多个tar.gz包
  • rust学习
  • 关于错误javax.net.ssl.SSLException: Received close_notify during handshake
  • 腾讯云轻量应用服务器地域怎么选择比较好?
  • 两个list中存放相同的对象,一个是页面导入,一个是从数据库查询,外部传入一个集合存放的是对象的属性名称,根据属性名称处理两个list
  • 程序模拟(Concurrency Simulator, ACM/ICPC World Finals 1991, UVa210)rust解法
  • java集合之List接口实现类常用方法详解
  • Gitee 发行版
  • 【音视频】Linux | FFmpeg源码搭建
  • explain查询sql执行计划返回的字段的详细说明
  • LeetCode——哈希表(Java)
  • uni-app中tab选项卡的实现效果 @click=“clickTab(‘sell‘)“事件可传参数
  • No175.精选前端面试题,享受每天的挑战和学习
  • 【算法与数据结构】--算法应用--算法和数据结构的案例研究
  • ubuntu部署个人网盘nextCloud使用docker-compose方式
  • 性能优化必读 | AntDB-M高性能设计之线程池协程模型
  • Docker底层原理:Cgroup V2的使用
  • centos7 部署 Flink
  • 设计模式——单例模式详解