[解決済み] Git リポジトリがデタッチド HEAD 状態になったのはなぜですか?
質問
私は今日、ヘッドが外れてしまいました。 ローカルに変更があるにもかかわらず、git push はすべて最新と表示します。
私の知る限りでは、ローカルリポからコミットしてプッシュしただけで、特別なことは何もしていません。
では、なぜ私は
detached HEAD
?
解決方法は?
のいずれかの名前でないコミットをチェックアウトした場合、そのコミットには あなたの ブランチは、切り離された HEAD を取得します。ブランチの先端を表す SHA1 でも、切り離された HEAD が得られます。ローカルブランチのチェックアウトのみ 名前 はそのモードを回避します。
HEAD を切り離すと、名前のついたブランチが更新されないことを除けば、コミットは通常どおり行われます。(これは匿名ブランチと考えることができます。)
例えば、最初に追跡せずに "リモートブランチ" をチェックアウトした場合、切り離された HEAD を持つことになる可能性があります。
意味するところ
git checkout origin/main
(または
origin/master
昔は
)になってしまう。
Note: switching to 'origin/main'.
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 switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at a1b2c3d My commit message
そのため
git checkout
を使用するようになり、新しい
git switch
コマンドを使用します。
と
git switch
を実行すると、リモートブランチにチェックアウト(切り替え)しようとすると、すぐに失敗してしまいます。
git switch origin/main
fatal: a branch is expected, got remote branch 'origin/main'
について補足すると
git switch
:
Git 2.23 (2019年8月) では、Git 2.23で使用されるようになった
紛らわしい
git checkout
コマンド
は、もう
git switch
は、ブランチをチェックアウトして、デタッチHEADを取得することもできます。
-
には、明示的な
--detach
オプション
コミットをチェックアウトするには
HEAD~3
新しいブランチを作成せずに、一時的な検査や実験のために使用します。git switch --detach HEAD~3 HEAD is now at 9fc9555312 Merge branch 'cc/shared-index-permbits'
- 間違ってリモート追跡ブランチを切り離すことはできません。
ご覧ください。
C:\Users\vonc\arepo>git checkout origin/master
Note: switching to 'origin/master'.
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 switching back to a branch.
対して、新しい
git switch
コマンドを使用します。
C:\Users\vonc\arepo>git switch origin/master
fatal: a branch is expected, got remote branch 'origin/master'
リモートブランチを追跡する新しいローカルブランチを作成したい場合。
git switch <branch>
もし
<branch>
は見つからないが、ちょうど1つのリモートにトラッキングブランチが存在する(それを<remote>
と同じものとして扱われます。git switch -c <branch> --track <remote>/<branch>
もう間違えない!
もう不要なHEADを切り離す必要はありません
関連
-
[解決済み] 現在のブランチのトラッキング情報がありません。
-
[解決済み] Git で管理されているプロジェクトのローカルな変更をすべて以前の状態に戻すにはどうすればよいですか?
-
[解決済み] Git のローカルコミットを破棄する
-
[解決済み] Git の detached head を修正するにはどうすればよいですか?
-
[解決済み] detached HEADとmaster/originの連携はどうすればいいですか?
-
[解決済み] GitのHEADとは何ですか?
-
[解決済み] Git で単一のブランチをクローンする方法を教えてください。
-
[解決済み] Git リポジトリで現在のコミットを唯一の(初期)コミットにする?
-
[解決済み] デタッチド・ヘッドで行ったコミットをどうするか
-
[解決済み】Gitのワークフローとrebaseとmergeの質問
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] masterブランチと'origin/master'が分岐している、'undiverge'ブランチの方法は?
-
[解決済み】ファイルのアンリンクに失敗しました。もう一度試してみるべきですか?
-
[解決済み】ローカルに変更があるにもかかわらず、git pushが「すべて最新」と言う
-
[解決済み】Git Push Error: リポジトリデータベースにオブジェクトを追加する権限が不足しています。
-
[解決済み] 無効なVCSルートマッピング - 私のプロジェクトで3つのエラーが発生しました。
-
[解決済み] fatal: bad revision "とはどういう意味ですか?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] Git の detached head を修正するにはどうすればよいですか?
-
[解決済み] detached HEADとmaster/originの連携はどうすればいいですか?
-
[解決済み] Gitサブモジュールを追加する際に、ブランチ/タグを指定するにはどうすればよいですか?