55

私がそうするなら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
$

現在のブランチの先頭でコミットの「切り離されたHEAD」状態を作成したいと思います。それ、どうやったら出来るの?

4

2 に答える 2

50

git 1.7.5 (2011 年 4 月) 以降、このコマンドを使用できますgit checkout --detach
Git 2.23(2019年第3四半期)以降、使用しますgit switch --detach

コミット 326696を参照してください

checkout: " "--detachの同義語を紹介しますgit checkout foo^{commit}

たとえば、一時的なマージを行って 2 つのトピックがうまく連携するかどうかをテストするときに、これを使用できます。


コミット 8ced1aa (git 1.7.11.3、2012 年 7 月) は、--detachまだ生まれていないブランチを許可しないため、 null で失敗することはありませんHEAD

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

今後の git 1.8.4.2 または 1.8.5 (2013 年第 4 四半期) のみが構文を明確にします。コミット 26776c9を参照してください。

このケースを 2 つの構文形式に分けて、DESCRIPTION セクションがこの使用法を示す方法を模倣します。
また、構文を説明するテキストを更新して、デタッチするコミットに名前を付けHEADて明確にします。

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

上で作業する準備をしてデタッチし ( 「 <commit>DETACHED HEAD」セクションを参照)、インデックスとツリーを更新すると、コミットに記録された状態とローカルの変更が追加されます。HEAD

  1. <commit>引数がブランチ名の場合、オプション--detachを使用しHEADてブランチの先端でデタッチできます (デタッチgit checkout <branch>せずにそのブランチをチェックアウトしHEADます)。

  2. 現在のブランチの先端で<branch>デタッチを省略しHEADます。

その最後のポイントは、まさに現在のブランチでやりたいことです。

git checkout --detach
于 2013-10-21T13:26:43.330 に答える
11

このコマンドは、任意のブランチ名 (この場合は master) から切り離されたヘッド状態を作成します。

git checkout master^0

コミット ハッシュをチェックアウトすると、切り離されたヘッド状態も自動的に作成されます^0

git checkout 823112f444cb4aa70032feea6e8e5eb79d0e1ed0

そしてもちろん、短いハッシュも同様です:

git checkout 823112f
于 2012-11-08T16:15:26.607 に答える