美文网首页Git使用Android技术知识编程语言爱好者
【工作小插曲】git HEAD 游离正确处理

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

作者: 黑暗终将过去 | 来源:发表于2018-07-20 23:55 被阅读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

    相关文章

      网友评论

        本文标题:【工作小插曲】git HEAD 游离正确处理

        本文链接:https://www.haomeiwen.com/subject/tadcmftx.html