Git

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

2017-06-05  本文已影响226人  拾大花sdf

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的选择

危险!分离头指针

上一篇下一篇

猜你喜欢

热点阅读