По моему опыту, Git не обновляет файлы, которые не изменились при переключении веток. Я призываю вас изучить это предположение более внимательно, посмотрев на время изменения до и после переключения ветвей, для файлов, которые изменились и не изменились. Если это действительно так, что временные метки меняются для файлов, которые не меняются, вам может понадобиться выяснить, что не так с вашим Git.
Если время изменения файла не меняется, но все по-прежнему перестраивается, значит, у вас проблема с вашим make-файлом.
Если вы обнаружите, что Git действительно обновляет временные метки только для файлов, которые изменились, но эти файлы являются центральными для вашей системы и вызывают массовые перестройки, тогда вы можете рассмотреть возможность использования git worktree
для сохранения разных веток на разных рабочих деревьях, чтобы вы могли не нужно переключаться между ними в одной и той же структуре каталогов.