Git使用Android技术知识编程语言爱好者

【工作小插曲】git HEAD 游离正确处理

2018-07-20  本文已影响15人  黑暗终将过去

今天公司更新代码的时候提示Git HEAD detached...,好久没有遇到过了。

HEAD,就是头指针,纸箱目前当前分支的最新提交。当使用git checkout 分支名的时候会指到到相应的分支。

git checkout.jpg

有一种情况,就是使用了git checkout commitid。

这时候会导致新建了一个匿名分支,这时候提交代码commit之后,如果直接切其他分支,刚才提交的代码会全部丢失!!具体解决方法有两个:

1、git stash 储存起来然后切回主分支,再git stash pop弹出,解冲突。
2、创建临时分支,切回主分支,merge解冲突。

实例场景演示

创建一些提交,如下,目前分支为master分支。


init.png

1、某一天要会看某次提交之后代码,为了方便就直接git checkout commitid


git checkout commitid.jpg

2、之后忘记了这件事,那天下午直接在上面改代码,改完git status看了一下发现这个提示。

head detached.jpg

这时候如果直接git add、git commit,然后git checkout master就会导致修改的代码全部没掉(当然,如果没有修改直接git checkout master就行)。可以通过git branch看见目前在一个匿名分支当中。

匿名分支.jpg

此时,正确的做法有两种:
方法1、通过git stash,如果有冲突解冲突,解完add、commit即可。

git stash
git checkout master
git stash pop
方法1.jpg

方法2、创建一个临时分支并提交,然后切回主分支merge,如果有冲突还是解重复图然后add commit即可,最后删除临时分支。

git checkout -b temp
git add .
git commit
git checkout master
git merge temp
解冲突然后add commit
git branch -d temp
方法2.jpg
上一篇下一篇

猜你喜欢

热点阅读