[执行git checkout HEAD时,我签出我的HEAD指向的提交。例如,在执行git reset --hard origin/master之后,我用它来触发一些钩子。
git checkout HEAD
HEAD
git reset --hard origin/master
尽管这样做后没有以独立的HEAD结尾的背后原理是什么?在上述情况下,我仍然位于我在重置之前签出的任何分支上。我对此没有问题,但对我来说,语义与其他操作不符。我希望最终会完成相同的提交,但是会出现HEAD分离(这也可能有用,也许有可能)。
使用
git checkout --detach HEAD
或简单地
git checkout --detach
签出HEAD使其自己处于分离的HEAD状态。
话虽这么说,checkout有时确实确实是一个令人困惑的命令(这促使git的开发人员最近引入了restore和restore。]
checkout
restore
请记住,在您的理论情况下,switch不是直接指向提交,而是指向分支。
switch
[签出HEAD时,您重新签出该分支,而不是直接提交其尖端提交(除非您另外明确指定)。