Git在分离的HEAD状态下重置

时间:2016-07-19 11:09:14

标签: git git-reset

我理解git reset命令在历史记录(*)中向后移动分支,并且它移动的分支是HEAD指向的分支。

所以我很好奇,我试图在detached HEAD state中调用它来看看会发生什么。我期待错误,但是git做了些什么,我只是无法弄清楚它做了什么。

在我签出并进入HEAD之前,Git的行为是否仍然指向detached HEAD state

[编辑1] 我实际上已经弄明白了。它与一个未处于分离头部状态时完全相同,只是它不会向后移动任何分支。它只是

[编辑2(*)] git reset实际上只在指定旧提交时在历史记录中向后移动分支。在执行git reset HEAD时,它会将分支留在原处(请参阅下面的注释)。

3 个答案:

答案 0 :(得分:4)

只是强调:

  

据我所知,git reset命令总是在历史记录中向后移动分支

这是不正确的,你可能想编辑你的问题,以避免混淆新的git人。例如,git reset --hard不会这样做,它只是在不移动HEAD或分支的情况下清除工作目录和索引。

事实上,省略<commit>中的可选git reset [<commit>]的所有变体都不会移动头部和分支。 git reset的其他选项执行其他操作,并非所有选项都移动HEAD。因此,移动HEAD只是git reset可以执行的几项操作之一。

答案 1 :(得分:3)

git reset使当前分支和HEAD移动到特定提交。如果它是一个分离的HEAD,它只会移动HEAD。

答案 2 :(得分:-1)

如果您只运行:git reset

它执行git add的相反操作,这是非阶段性更改......

git reset命令有三种形式,每种形式都有相关选项并执行不同的操作。如果您想深入了解,请查看git reset文档。