Gitで意図的にHEADをデタッチするにはどうすればいいですか? 質問する

Gitで意図的にHEADをデタッチするにはどうすればいいですか? 質問する

そうすると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」状態を作成したいと思います。どうすればいいですか?

ベストアンサー1

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>から取り外して、その上で作業する準備をしますHEAD「取り外したヘッド」のセクションを参照)、インデックスとツリーを更新すると、コミットに記録された状態とローカルの変更が反映されます。

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

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

最後のポイントは、まさに現在のブランチに対して実行したいことです。

git checkout --detach

おすすめ記事