detached HEAD以及切换分支代码丢失

切换detached HEAD 分支代码丢失

首先要知道,所有提交过的代码,都是可以被找回的。

先来说说,从detached HEAD分支切换到其他分支,导致代码丢失的解决办法。每个人造成这种问题的原因,可能不尽相同,但是解决办法确实通用的

解决办法:

1、执行git reflog可以看到提交记录

这里写图片描述

2、git checkout b4f719

3、git checkout -b temp 创建temp 分支,并切换到该temp 分支
4、git checkout master 切换到master分支
5、git merge temp 合并temp分支

HEAD基本和detached 状态

1.HEAD基础

git checkout 实际上是修改HEAD文件的内容,让其指向不同的branch。

HEAD文件指向的branch就是当前branch.

一般来讲,HEAD的内容是指向staging(暂存区)的master文件的。

ref: refs/heads/master

2.detached HEAD

如果让HEAD文件指向一个commit id,那就变成了detached HEAD。git checkout 可以达到这个效果,用下面的命令:

git checkout 1aea8d9

laea8d9是一次提交的commit id,这样HEAD就会指向这个提交。

$ git checkout 89f8dae^
Note: checking out '89f8dae^'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at 1aea8d9... add test file x

git checkout之一 HEAD基本和detached 状态
git提交到HEAD detached导致代码丢失

猜你喜欢

转载自blog.csdn.net/xx326664162/article/details/81223946