Does the GIT_WORK_TREE get lost on the middle of process or I am misunderstand the git checkout? What did you do before the bug happened? (Steps to reproduce your issue) - I wrote a shell script to reproduce ```git-test.sh GIT_ROOT=$(mktemp -d) GIT_COPY=$(mktemp -d) echo "Create git repo with two commits: $GIT_ROOT" cd $GIT_ROOT git init echo 1 > a.txt echo 1 > b.txt git add *.txt git commit -m "Initial commit" echo 2 > b.txt git add b.txt git commit -m "Second commit" echo "Checkout to other work-tree: $GIT_COPY" GIT_WORK_TREE=$GIT_COPY git checkout HEAD~1 git status echo "ORIGIN $GIT_ROOT" ls -la $GIT_ROOT echo "COPY $GIT_COPY" ls -la $GIT_COPY ``` What did you expect to happen? (Expected behavior) - a.txt and b.txt checkouted to $GIT_COPY both with content `1` - current folder unchanged What happened instead? (Actual behavior) - only b.txt checkouted to $GIT_COPY - HEAD~1 checkouted in current folder but folder content remains HEAD (modified: b.txt) [System Info] git version: git version 2.34.1 cpu: x86_64 no commit associated with this build sizeof-long: 8 sizeof-size_t: 8 shell-path: /bin/sh uname: Linux 5.16.0-arch1-1 #1 SMP PREEMPT Mon, 10 Jan 2022 20:11:47 +0000 x86_64 compiler info: gnuc: 11.1 libc info: glibc: 2.33 $SHELL (typically, interactive shell): /usr/bin/bash [Enabled Hooks] prepare-commit-msg