Neat! Would a similar approach work with ZFS instead of btrfs?
This should actually be a feature for git itself, if it's not already.
Buy yeah, this should be equivalent in most cases, since I can't imagine that many Git repos have enough files for the difference to be noticeable.
echo 2 | sudo tee /proc/sys/vm/drop_caches
time cp -rl foo bar
took 2.6 seconds for 273000 files, so I think it's highly manageable. Reflinking might be a bit slower than hardlinking, though.