Необходимо перестроить только объектные файлы, чьи зависимости между двумя ветвями различаются.
При переключении веток git не трогает файлы, которые не отличаются между двумя ветвями.
Пока у вас есть соответствующие зависимости, выраженные или выведенные в вашей системе сборки, инкрементная сборка после переключения филиала будет работать и быть достаточно эффективной. Во многих моих проектах я часто переключаю ветки, а инкрементные сборки выполняются быстро и надежно.
Если вы хотите работать с двумя ветвями без необходимости вообще перестраивать их при переключении ветвей, вам следует использовать второй клон и работать в независимых рабочих областях.
Регистрация объектных файлов в том же хранилище, что и источник, который их создает, почти всегда плохая идея. Для начала, это позволяет проверить несоответствующие входные и выходные данные.