Bình thường HEAD trỏ vào một branch; commit mới sẽ kéo branch đi theo.
- Khi bạn
git checkout <commit-hash>(hoặc checkout tag), HEAD trỏ thẳng vào commit — trạng thái "detached HEAD". - Code vẫn xem/build/test được bình thường, nhưng commit mới tạo ở đây không thuộc branch nào — rời đi là chúng trở thành unreachable (chỉ còn tìm lại được qua reflog).
bash
git checkout abc123 # xem code tại commit cũ — detached HEAD
# ... inspect, build, test ...
git switch - # quay lại branch trước đóNếu lỡ commit trong detached HEAD và muốn giữ:
bash
git switch -c fix/from-old-commit # tạo branch ngay tại đây — commits được giữ lạigit switch (Git 2.23+) tách bạch hơn checkout: git switch <branch> để đổi branch, git switch --detach <hash> khi muốn vào detached HEAD có chủ đích.