美文网首页Git
git checkout 命令的作用,以及错误使用git che

git checkout 命令的作用,以及错误使用git che

作者: 拾大花sdf | 来源:发表于2017-06-05 12:38 被阅读226次

    git checkout 命令的作用,以及错误使用git checkout 导致HEAD分离情况的处理

    切换分支

    在提交层面的git checkout 非常简单,当传入分支名的时候,就可以切换到那个分支

    比如:

     git checkout dev
     
    

    上面这个命令做的不过是将HEAD移到一个新的分支,然后更新工作目录。因为这可能会覆盖本地的修改,Git强制你提交或者缓存工作目录中的所有更改,不然在checkout的时候这些更改都会丢失。


    imageimage

    切换到任意提交

     commit 9fa9c5fb42053d97276ac50c1935d61c0e19ebdc
    Author: fanyu1986 <18396605592@163.com>
    Date:   Fri Feb 17 15:15:37 2017 +0800
    
        add style of account message
    
    
    

    其中 9fa9c5fb42053d97276ac50c1935d61c0e19ebdc 即为提交的HEAD

    使用git checkout 9fa9c5fb42053d97276ac50c1935d61c0e19ebdc 就可以将HEAD移动到这个提交

    比如如果想返会当前HEAD前两次的提交 可以使用

    git checkout HEAD~2
    
    
    imageimage

    HEAD分离

    这对于快速查看项目旧版本来说非常有用。但如果你当前的HEAD没有任何分支引用(我现在理解是没有一个分支的最后一次提交的HEAD和当前HEAD一样),那么这会造成HEAD分离。

    头指针分离于 9fa9c5f
    
    

    这是非常危险的,如果你接着添加新的提交,

    [分离头指针 a1444ee] 测试HEAD分离
     1 file changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 test_head.php
    
    

    然后切换到别的分支之时git会提醒你

    警告:您正丢下 1 个提交,未和任何分支关联:
    
      9fa9c5f commit message 分离
    
    如果您想要通过创建新分支保存它,这可能是一个好时候。
    如下操作:
    
     git branch <新分支名> 9fa9c5f
    
    切换到分支 'master'
    您的分支与上游分支 'origin/master' 一致。
    
    

    如果使用 git branch <新分支名> 9fa9c5f 会创建一个新的分支来保存本次提交,如果没有建分支的话,HEAD分离提交后的内容就会永远消失。

    本文参考

    5.2 代码回滚:Reset、Checkout、Revert的选择

    危险!分离头指针

    相关文章

      网友评论

        本文标题:git checkout 命令的作用,以及错误使用git che

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