From: Junio C Hamano Date: Thu, 15 Oct 2009 20:34:41 GMT Subject: Re: [PATCH] Proof-of-concept patch to remember what the detached HEAD was Message-ID: <7v3a5k4cri.fsf@alter.siamese.dyndns.org> In-Reply-To: Daniel Barkalow writes: > $ git checkout origin/master > $ git fetch > $ git checkout origin/next > Uncommited file '...' would be overwritten. > > If HEAD is a symref to refs/remotes/origin/master, and you update > refs/remotes/origin/master, git will subsequently see that your index > doesn't match HEAD, and when you switch branches, it will try to apply a > revert to the branch you're switching to. It's the same issue as pushing > into a non-bare repository. I think the idea here is to allow HEAD to point at outside refs/heads/, e.g. refs/remotes/origin/master, but forbid commit and other commands from updating HEAD and its underlying ref via update_ref() unless HEAD is detached or points at a local branch.