From: Ben Peart <benpeart@xxxxxxxxxxxxx> When doing a 'checkout -b' do a full checkout including updating the working tree when doing the initial checkout. This fixes the regression in behavior caused by fa655d8411 checkout: optimize "git checkout -b <new_branch>" Signed-off-by: Ben Peart <benpeart@xxxxxxxxxxxxx> --- builtin/checkout.c | 6 ++++++ t/t2018-checkout-branch.sh | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/builtin/checkout.c b/builtin/checkout.c index 6fadf412e8..af6b5c8336 100644 --- a/builtin/checkout.c +++ b/builtin/checkout.c @@ -517,6 +517,12 @@ static int skip_merge_working_tree(const struct checkout_opts *opts, if (core_apply_sparse_checkout && !checkout_optimize_new_branch) return 0; + /* + * We must do the merge if this is the initial checkout + */ + if (is_cache_unborn()) + return 0; + /* * We must do the merge if we are actually moving to a new commit. */ diff --git a/t/t2018-checkout-branch.sh b/t/t2018-checkout-branch.sh index 35999b3adb..c438889b0c 100755 --- a/t/t2018-checkout-branch.sh +++ b/t/t2018-checkout-branch.sh @@ -206,7 +206,7 @@ test_expect_success 'checkout -b after clone --no-checkout does a checkout of HE rev="$(git -C src rev-parse HEAD)" && git clone --no-checkout src dest && git -C dest checkout "$rev" -b branch && - test_must_fail test -f dest/a + test -f dest/a ' test_done -- 2.19.1.gvfs.1.16.g9d1374d