I can reliably reproduce this using a recent version of GNU Guix. When updating the commit hash to a different commit the git-fetch derivation *does* change (I checked in guile), but the checked out git tree in the store does not change - it gets shared between the commits. I am not sure why the tree gets shared, but the effect is that the same package gets installed using the same /gnu/store/xxx-git-checkout.
Removing the git-checkout dir and updating the Hash gives a missing dir error (as expected when they use the same).
