Has there ever been any any discussion of creating an ephemeral-branch name mechanism, instead of using detached HEADs? By ephemeral, I mean that a branch-name could be created which would live only so long as it is the only named way to reach a ref or the ref is in the working directory. Ephemeral branch names would be local-only and would never be pushed. For example, if one performed "git checkout 2c29d...", one would not get a detached head-state, but instead would get an ephemeral branch name similar to "etmp/2c29d...". If no changes were checked into this ephemeral branch, it would disappear as soon as it was no longer in the working directory. If any changes were checked in on this branch, it would survive until (a) the ref is given a non-ephemeral branch name, (b) the changes are merged, (c) the ephemeral branch is deleted/discarded. I'm asking about (and proposing) this mechanism, because it would prevent refs from ever being "accidentally lost", such as occurs in the following scenerios.. 1) forgetting to branch a detached head before checkin 2) forgetting a head is detached before moving away from it 3) forgetting about checkins before a submodule update Also, these "etmp/####" branches would serve as an obvious visible reminder in the branch list that a change was checked in that should either be merged, named, or discarded. -- 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