Git 重置为分离的 HEAD 状态
Git reset in detached HEAD state
我知道 git reset
命令在历史中向后移动一个分支 (*),并且它移动的分支是 HEAD
指向的分支。
所以我很好奇,我试着在 detached HEAD state
中调用它,看看会发生什么。我期待错误,但 git 做了一些事情,我只是无法弄清楚它做了什么。
Git 是否表现得像 HEAD
仍然指向我退房并进入 detached HEAD state
之前的位置?
[ 编辑 1 ] 我真的想通了。它与当一个人不处于分离的头部状态时完全相同,只是它不向后移动任何分支。只是
[ Edit 2(*) ] git reset
实际上只在指定较旧的提交时向后移动一个分支。当执行 git reset HEAD
时,它会将分支留在原处(请参阅下面的评论)。
git reset
使当前分支和 HEAD 移动到特定的提交。如果它是一个分离的 HEAD,它只会移动 HEAD。
如果您 运行 只是:git reset
它执行与 git add
相反的操作,即未分级的更改...
git reset
命令有三种形式,每种形式都有相关的选项并执行不同的操作。如果您想深入了解,请查看 git reset 文档。
强调一下:
I understand that the git reset command always moves a branch backwards in the history,
这是不正确的,您可能需要编辑您的问题以避免让 git 的新手感到困惑。例如,git reset --hard
不会那样做,它只是擦除工作目录和索引,而不移动 HEAD 或分支。
事实上,在 git reset [<commit>]
中省略可选 <commit>
的所有变体都不会移动头部或分支。 git reset
的其他选项做其他事情,不是所有的都移动 HEAD。所以四处移动 HEAD 只是 git reset
可以做的几个动作之一。
我知道 git reset
命令在历史中向后移动一个分支 (*),并且它移动的分支是 HEAD
指向的分支。
所以我很好奇,我试着在 detached HEAD state
中调用它,看看会发生什么。我期待错误,但 git 做了一些事情,我只是无法弄清楚它做了什么。
Git 是否表现得像 HEAD
仍然指向我退房并进入 detached HEAD state
之前的位置?
[ 编辑 1 ] 我真的想通了。它与当一个人不处于分离的头部状态时完全相同,只是它不向后移动任何分支。只是
[ Edit 2(*) ] git reset
实际上只在指定较旧的提交时向后移动一个分支。当执行 git reset HEAD
时,它会将分支留在原处(请参阅下面的评论)。
git reset
使当前分支和 HEAD 移动到特定的提交。如果它是一个分离的 HEAD,它只会移动 HEAD。
如果您 运行 只是:git reset
它执行与 git add
相反的操作,即未分级的更改...
git reset
命令有三种形式,每种形式都有相关的选项并执行不同的操作。如果您想深入了解,请查看 git reset 文档。
强调一下:
I understand that the git reset command always moves a branch backwards in the history,
这是不正确的,您可能需要编辑您的问题以避免让 git 的新手感到困惑。例如,git reset --hard
不会那样做,它只是擦除工作目录和索引,而不移动 HEAD 或分支。
事实上,在 git reset [<commit>]
中省略可选 <commit>
的所有变体都不会移动头部或分支。 git reset
的其他选项做其他事情,不是所有的都移动 HEAD。所以四处移动 HEAD 只是 git reset
可以做的几个动作之一。