git常见问题-如何从git HEAD detached中恢复

1.Git Checkout 操作概念

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

查看.git下的文件HEAD

ref: refs/heads/feature/20170629_996359_init_1

和执行 branch -a的地址是一样的,可见HEAD文件确实指定了了当前branch。

* feature/20170629_996359_init_1
  master

2.为什么会出现detached Head

git checkout最简单的用法,显示工作区,暂存区和HEAD的差异;

$git checkout
Your branch is up-to-date with 'origin/feature/20170629_996359_init_1'.

但是有时候使用git checkout的时候会出现'ou are in 'detached HEAD' state.'的提示,原因是什么呢?

如果让HEAD文件指向一个commit id,那就变成了detached HEAD。采用如下步骤可以复现该效果

  1. git log 查看版本好
  2. git checkout 某一个版本号,可以看到如下结果
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 

HEAD is now at d3c3a8a... update

如何退出detached Head

git checkout 本地分支即可退出detached状态。
在实际应用出现这个情况一般是check origin的时候,这个时候可能会出现一些错误操作,比如不停的checkout orgin,pull等操作。

你可能感兴趣的:(git常见问题-如何从git HEAD detached中恢复)