I often switch back and forth between branches. I have a script which pushes the contents of the checkout to a 'running' environment where I can see the code run and test it (it's a web app). This push script uses rsync at its heart and it uses timestamps to detect what files should really be transferred. Because 'git-checkout' seems to set the timestamps on the files to the current time, rsync reports all files are being pushed up, only because timestamps will be updated.
How can I have 'git-checkout' retain timestamps when switching between branches so that rsync will report only content changes?
I do not want to use rsync's checksum argument as it is very slow.