Не думаю, что вы поняли, что такое контроль версий. По крайней мере, мне кажется, что вы используете ветки неправильно. Это грязный дизайн хранилища, который вызывает все ваши проблемы. Не имеет смысла располагать исходные тексты в двух ветвях, в то время как скомпилированные файлы должны создаваться из одной ветки и фиксироваться в другой, тогда вы также можете создавать и фиксировать скомпилированные файлы в одной ветке источник, из которого он был получен.
Кажется, вы используете ветки вместо отдельных репозиториев. Если вы компилируете код из какого-либо источника в одной ветви и фиксируете файлы в другой ветви, как вы узнаете, из какой версии источника он был скомпилирован?
Я не понимаю, почему вы не можете просто получить исходный текст и скомпилированные файлы в одной ветке, работать и компилировать, пока не закончите, а затем объедините изменения в master. Тогда у вас есть исходные и скомпилированные файлы в двух ветвях, ну и что? :) Альтернативой является сохранение источника в одной ветви, работа с исходным кодом до тех пор, пока вы не «закончите», передайте источник и объедините изменения в master. Проверьте ветку master, скомпилируйте и зафиксируйте новые скомпилированные файлы.