Hello, Consider a repository with a develop branch tracking origin/develop and where HEAD = 545a36f = develop = origin/develop. Tested with Git 2.4.3 and 1.8.3.4 on Linux. 1) git checkout develop 2) git branch | head -1 (or git status) * develop 3) git checkout origin/develop Note: checking out 'origin/develop'. You are in 'detached HEAD' state. 4) git branch | head -1 * (HEAD detached at origin/develop) 5) git checkout 545a36f 6) git branch | head -1 * (HEAD detached at origin/develop) 7) git checkout develop 8) git branch | head -1 (or git status) * develop 9) git checkout 545a36f Note: checking out '545a36f'. You are in 'detached HEAD' state. 10) git branch | head -1 (or git status) * (HEAD detached at 545a36f) 11) git checkout origin/develop 12) git branch | head -1 (or git status) * (HEAD detached at 545a36f) As you can see, checking out a revision by SHA1 after checking out a local branch tells you you are detached at that SHA1. Ok. But, checking out a revision by SHA1 after checking out a remote tracking branch tells you you are detached at that remote tracking branch. And checking out a remote tracking branch after checking out a revision by SHA1 tells you you are detached at that SHA1. This is confusing. Is this by design? For a script I am writing, it would be great if the output would be consistent. Checkout origin/develop should always say "detached at origin/develop". Checkout 545a36f should always say "detached at 545a36f". It looks like the detached head information is only updated when a detached head state is entered and not anymore when a checkout occurs "within" a detached head state. Best regards, Stijn -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html