Każde pobranie zatwierdzenia, które nie jest nazwą jednego z twoich oddziałów, da ci odłączony HEAD. SHA1, który reprezentuje wierzchołek gałęzi, wciąż daje odłączoną GŁOWĘ. Tylko kasa lokalnego oddziału nazwy unika tego trybu.
Zobacz zatwierdzanie z odłączonym HEAD
Gdy HEAD jest odłączony, zatwierdzenia działają normalnie, tyle że żadna nazwana gałąź nie jest aktualizowana. (Możesz myśleć o tym jak o anonimowej gałęzi).

Na przykład, jeśli kasujesz „zdalną gałąź” bez uprzedniego jej śledzenia, możesz skończyć z odłączonym HEAD.
Zobacz git: przełącz gałąź bez odłączania głowy
Dzięki Git 2.23 (sierpień 2019 r.) Nie musisz już używać mylącego git checkoutpolecenia .
git switch może również sprawdzić oddział i uzyskać odłączenie HEAD, z wyjątkiem:
Aby sprawdzić zatwierdzenie HEAD~3do tymczasowej inspekcji lub eksperymentu bez tworzenia nowego oddziału:
git switch --detach HEAD~3
HEAD is now at 9fc9555312 Merge branch 'cc/shared-index-permbits'
- nie można go odłączyć przez pomyłkę oddziału zdalnego śledzenia
Widzieć:
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.
Vs. za pomocą nowego git switchpolecenia:
C:\Users\vonc\arepo>git switch origin/master
fatal: a branch is expected, got remote branch 'origin/master'
Jeśli chcesz utworzyć nowy oddział lokalny śledzący oddział zdalny:
git switch <branch>
Jeśli <branch>nie zostanie znalezione, ale istnieje dokładnie gałąź śledzenia w jednym pilocie (nazwij ją <remote>) o pasującej nazwie, traktuj ją jako odpowiednik
git switch -c <branch> --track <remote>/<branch>
Nigdy więcej błędu!
Nigdy więcej niechcianych odłączonych HEAD!
branch-name@{n}n-tej poprzedniej pozycjibranch-name. Ale nie ważne co, w pewnym momencie musiał byćgit checkout <rev>. Jeśli to nie zadzwoni, prawdopodobnie zrobiłeś to, o czym wspomniał Will - próbowałeś to zrobićgit checkout <file>i przez przypadek udało ci się określić poprawkę.