зеркало из https://github.com/microsoft/git.git
git-checkout: safety when coming back from the detached HEAD state.
After making commits in the detached HEAD state, if you run "git checkout" to switch to an existing branch, you will lose your work. Make sure the switched-to branch is a fast-forward of the current HEAD, or require -f when switching. Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Родитель
73c838e4c9
Коммит
ead80606d4
|
@ -14,6 +14,8 @@ branch=
|
||||||
newbranch=
|
newbranch=
|
||||||
newbranch_log=
|
newbranch_log=
|
||||||
merge=
|
merge=
|
||||||
|
LF='
|
||||||
|
'
|
||||||
while [ "$#" != "0" ]; do
|
while [ "$#" != "0" ]; do
|
||||||
arg="$1"
|
arg="$1"
|
||||||
shift
|
shift
|
||||||
|
@ -164,6 +166,22 @@ associate a new branch with the wanted checkout. Example:
|
||||||
git checkout -b <new_branch_name> $arg
|
git checkout -b <new_branch_name> $arg
|
||||||
"
|
"
|
||||||
fi
|
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
|
fi
|
||||||
|
|
||||||
if [ "X$old" = X ]
|
if [ "X$old" = X ]
|
||||||
|
|
Загрузка…
Ссылка в новой задаче