Skip to content

Commit

Permalink
git-checkout: safety check for detached HEAD checks existing refs
Browse files Browse the repository at this point in the history
Checking for reachability from refs does not help much if the
state we are currently on is somewhere in the middle.  We will
lose where we were.

So this makes sureh that HEAD is something directly pointed at
by one of the existing refs (most likely a tag for a user who
has been "sightseeing").

Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Junio C Hamano committed Jan 10, 2007
1 parent 8d78b5a commit 75b364d
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions git-checkout.sh
Original file line number Diff line number Diff line change
Expand Up @@ -171,14 +171,14 @@ then
# Coming back...
if test -z "$force"
then
mb=$(git merge-base --all $old $new) &&
case "$LF$mb$LF" in
*"$LF$old$LF"*) : ;;
*) false ;;
esac || {
git show-ref -d -s | grep "$old" >/dev/null || {
echo >&2 \
"You are not on a branch and switching to $new_name branch may lose
your changes. Use 'git checkout -f $new_name' if you want to."
"You are not on any branch and switching to branch '$new_name'
may lose your changes. At this point, you can do one of two things:
(1) Decide it is Ok and say 'git checkout -f $new_name';
(2) Start a new branch from the current commit, by saying
'git checkout -b <branch-name>'.
Leaving your HEAD detached; not switching to branch '$new_name'."
exit 1;
}
fi
Expand Down

0 comments on commit 75b364d

Please sign in to comment.