I thought you may want to take a look at https://issues.jenkins.io/browse/JENKINS-65395. Basically after something updates the ctime of a file, a "git checkout" can behave differently depending on whether a "git update-index --refresh" has been run before or not. _Maybe_ it could make sense for "git checkout" to always behave as if "git update-index --refresh" had been run before? No idea really. I have seen this with git version 2.30.2.