зеркало из https://github.com/microsoft/git.git
Merge branch 'jk/pull-into-dirty-unborn'
"git pull" into nothing trashed "local changes" that were in the index, and this avoids it. * jk/pull-into-dirty-unborn: pull: merge into unborn by fast-forwarding from empty tree pull: update unborn branch tip after index
This commit is contained in:
Коммит
833cd7fc9f
11
git-pull.sh
11
git-pull.sh
|
@ -266,10 +266,17 @@ case "$merge_head" in
|
|||
;;
|
||||
esac
|
||||
|
||||
# Pulling into unborn branch: a shorthand for branching off
|
||||
# FETCH_HEAD, for lazy typers.
|
||||
if test -z "$orig_head"
|
||||
then
|
||||
git update-ref -m "initial pull" HEAD $merge_head "$curr_head" &&
|
||||
git read-tree -m -u HEAD || exit 1
|
||||
# Two-way merge: we claim the index is based on an empty tree,
|
||||
# and try to fast-forward to HEAD. This ensures we will not
|
||||
# lose index/worktree changes that the user already made on
|
||||
# the unborn branch.
|
||||
empty_tree=4b825dc642cb6eb9a060e54bf8d69288fbee4904
|
||||
git read-tree -m -u $empty_tree $merge_head &&
|
||||
git update-ref -m "initial pull" HEAD $merge_head "$curr_head"
|
||||
exit
|
||||
fi
|
||||
|
||||
|
|
|
@ -57,6 +57,35 @@ test_expect_success 'pulling into void does not overwrite untracked files' '
|
|||
)
|
||||
'
|
||||
|
||||
test_expect_success 'pulling into void does not overwrite staged files' '
|
||||
git init cloned-staged-colliding &&
|
||||
(
|
||||
cd cloned-staged-colliding &&
|
||||
echo "alternate content" >file &&
|
||||
git add file &&
|
||||
test_must_fail git pull .. master &&
|
||||
echo "alternate content" >expect &&
|
||||
test_cmp expect file &&
|
||||
git cat-file blob :file >file.index &&
|
||||
test_cmp expect file.index
|
||||
)
|
||||
'
|
||||
|
||||
|
||||
test_expect_success 'pulling into void does not remove new staged files' '
|
||||
git init cloned-staged-new &&
|
||||
(
|
||||
cd cloned-staged-new &&
|
||||
echo "new tracked file" >newfile &&
|
||||
git add newfile &&
|
||||
git pull .. master &&
|
||||
echo "new tracked file" >expect &&
|
||||
test_cmp expect newfile &&
|
||||
git cat-file blob :newfile >newfile.index &&
|
||||
test_cmp expect newfile.index
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'test . as a remote' '
|
||||
|
||||
git branch copy master &&
|
||||
|
|
Загрузка…
Ссылка в новой задаче