diff options
Diffstat (limited to 'git-checkout.sh')
-rwxr-xr-x | git-checkout.sh | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/git-checkout.sh b/git-checkout.sh index 3250f64ccc..69d0c1c43a 100755 --- a/git-checkout.sh +++ b/git-checkout.sh @@ -14,6 +14,8 @@ branch= newbranch= newbranch_log= merge= +LF=' +' while [ "$#" != "0" ]; do arg="$1" shift @@ -164,6 +166,22 @@ associate a new branch with the wanted checkout. Example: git checkout -b <new_branch_name> $arg " fi +elif test -z "$oldbranch" && test -n "$branch" +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 || { + 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." + exit 1; + } + fi fi if [ "X$old" = X ] |