2

在使用 git 时,会冷不丁弹出一些术语,在之前可能没有听过,突然之间心情就紧张起来了。

其中就有一个分离头指针(detacged HEAD)

分离头指针

有时你在切换分支时,输了一个commit信息

git 给你的提示,你现在正在基于这个commit做操作。

你现在正处在分离头指针状态,你可以做一些变更然后产生commit,你也可以把生成的commit丢弃掉。也就是说你在分离头指针状态下,可以继续开发,但不影响其他开发,它的本意是:现在正在工作在没有分支的状态下。

下面具体演示下分离头指针的操作。

现在修改了 style/style.css 文件,并且commit

这时候用git log查看历史信息时,发现之前HEAD这变都会指向一个分支,然而这边却没有。这个就叫分离头指针状态

假设这是你接到了一个任务,需要切换分支

它会有一个警告说:现在有一个commit没有加到分支上去。也就是说这个commit一会会被垃圾清理掉。我们可以gitk --all来查看有没有add maincommit信息。

从上图可以看出,这个commit没有和某个分支绑着,也没有和某个tag绑着,在 git 眼里,这种commit日后都是要被清除的。

假如这个时候我醒悟过来了,觉得这个commit很重要,按照它的指示信息建一个分支,将它保留下来。

此时你可以看到add maincommit被保留了下来。

如果你想要添加到某个分支上,再用merge

比如你想添加到master分支上,将HEAD切换到master分支,然后用git merge css,就将这次commit添加到master上了。

进一步理解 HEAD 和 branch

git ckeckout -b fix_bug temp        //新分支
git diff commit信息 commit信息      //比较两个 commit 之间的差异
git diff HEAD HEAD^                 //等价于下面这条命令
git diff HEAD HEAD~1                //等价于上面这条命令

uccs
756 声望88 粉丝

3年 gis 开发,wx:ttxbg210604