如何在git中故意分离HEAD?

r3i60tvu  于 9个月前  发布在  Git
关注(0)|答案(2)|浏览(88)

如果我做git checkout HEAD^,我得到这个:

$ git checkout HEAD^
Note: checking out 'HEAD^'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b new_branch_name

HEAD is now at...
$

字符串
资深的git用户可能对此非常熟悉。但是如果我执行git checkout HEAD,什么也没有发生:

$ git checkout HEAD
$


我想在当前分支的头部为提交创建“detached HEAD”状态。我该怎么做?

30byixjq

30byixjq1#

从git 1.7.5(2011年4月)开始,可以使用git checkout --detach命令。
Since Git 2.23 (Q3 2019),您可以使用git switch --detach
参见commit 326696

checkout:引入--detach的同义词“git checkout foo^{commit}

例如,在进行临时合并以测试两个主题是否能够很好地协同工作时,可以使用此方法。
Commit 8ced1aa(git 1.7.11.3,2012年7月)不允许在未出生的分支上使用--detach,所以这不会在空HEAD上失败:

git checkout --orphan foo
git checkout --detach
git symbolic-ref HEAD

字符串
只有即将发布的git 1.8.4.2或1.8.5(2013年第4季度)会澄清语法。请参阅commit 26776c9
将这种情况分成两种语法形式,模仿DESCRIPTION部分显示这种用法的方式。
另外,更新解释语法的文本,将提交命名为detach HEAD at,以澄清。

'git checkout' [--detach] <commit>::


准备在<commit>上工作,通过在HEAD上分离HEAD(参见“DETACHEAD”部分),并更新索引,树将是提交中记录的状态加上本地修改。
1.当x1m10 n1x参数是一个分支名称时,x1m11 n1x选项可用于分离分支顶端的x1m12 n1x(x1m13 n1x将检出该分支,而不分离x1m14 n1x)。
1.省略<branch>会在当前分支的顶端分离HEAD
最后一点正是你想为你当前的分支做的:

git checkout --detach

b4qexyjb

b4qexyjb2#

此命令从任何给定的分支名称(在本例中为master)创建分离的head状态:

git checkout master^0

字符串
检出提交哈希也会自动创建一个分离的头状态,不需要^0

git checkout 823112f444cb4aa70032feea6e8e5eb79d0e1ed0


当然,也包括较短的哈希:

git checkout 823112f

相关问题