Допустим, у меня есть несколько веток с различным кодом: BranchA и BranchB. Предположим, я сейчас на BranchA и запускаю сборку. Предположим, что моя сборка сбрасывает файлы .class и другие скомпилированные объекты в каталоги внутри рабочего дерева. Когда я запускаю diff, я вижу, что каталоги изменились, потому что в них есть новые скомпилированные объекты.
Если я переключаюсь на BranchB и внедряю свой код, то я фактически развертываю объекты, скомпилированные из базы кода BranchA, поскольку git поддерживал мои плавающие изменения (новые скомпилированные объекты) по всему переключателю филиала. Это явно ошибка.
Есть несколько способов избежать этого, один из которых заключается в очистке файлов без контроля версий всякий раз, когда мы переключаем ветки, но есть ли более надежный способ решения этой проблемы. Я бы предпочел не помещать скомпилированный объект в систему управления версиями.