Here's a simple regression test -- haven't had time to bisect this ``` #!/usr/bin/env bash set -euxo pipefail rm -rf src dest git --version git init src echo hi > src/a git -C src add . git -C src commit -m "initial commit" rev="$(git -C src rev-parse HEAD)" git clone --no-checkout src dest git -C dest checkout "$rev" -b branch test -f dest/a : 'SUCCESS!' ``` With git 2.17.1 ``` + set -euo pipefail + rm -rf src dest + git --version git version 2.17.1 + git init src Initialized empty Git repository in /tmp/t/src/.git/ + echo hi + git -C src add . + git -C src commit -m 'initial commit' [master (root-commit) 61ae2ae] initial commit 1 file changed, 1 insertion(+) create mode 100644 a ++ git -C src rev-parse HEAD + rev=61ae2ae9c9a96de7b1688b095f20a6adf9c20db1 + git clone --no-checkout src dest Cloning into 'dest'... done. + git -C dest checkout 61ae2ae9c9a96de7b1688b095f20a6adf9c20db1 -b branch Switched to a new branch 'branch' + test -f dest/a + : 'SUCCESS!' ``` With git 2.20.GIT (b21ebb671bb7dea8d342225f0d66c41f4e54d5ca) ``` + set -euo pipefail + rm -rf src dest + git --version git version 2.20.GIT + git init src Initialized empty Git repository in /tmp/t/src/.git/ + echo hi + git -C src add . + git -C src commit -m 'initial commit' [master (root-commit) df4d6dc] initial commit 1 file changed, 1 insertion(+) create mode 100644 a ++ git -C src rev-parse HEAD + rev=df4d6dcf02b15bfe2b3f0e4a8aa25ac165b1368c + git clone --no-checkout src dest Cloning into 'dest'... done. + git -C dest checkout df4d6dcf02b15bfe2b3f0e4a8aa25ac165b1368c -b branch D a Switched to a new branch 'branch' + test -f dest/a ``` A workaround for my use case is to not use `--no-checkout`, though this is potentially slow Anthony