If the leading path of a tracked file gets replaced by a symlink, git checkout will follow that symlink when removing the file. This bug seems to be present since 2011. Fix that and add a regression test. Matheus Tavares (2): symlinks: update comment on threaded_check_leading_path() checkout: don't follow symlinks when removing entries cache.h | 2 +- entry.c | 2 +- symlinks.c | 54 ++++++++++++++++------------------- t/t2021-checkout-overwrite.sh | 12 ++++++++ unpack-trees.c | 2 +- 5 files changed, 39 insertions(+), 33 deletions(-) -- 2.30.1