git y C ++ workflow, ¿cómo manejar objetos y archivos de almacenamiento?

Uso git para interactuar con un repositorio SVN. Tengo varias ramas git para los diferentes proyectos en los que trabajo.

Ahora, cada vez que cambio de una rama a otra usando 'git checkout', todos los archivos ejecutables y objetos compilados de la rama anterior todavía están allí. Lo que me gustaría ver es que cambiar de la rama A a la B da como resultado un árbol con todos los archivos de objetos y binarios de la última vez que trabajé en la rama B.

¿Hay alguna forma de manejar esto sin crear múltiples repositorios git?

Actualizar Entiendo que los ejecutables y los binarios no deberían terminar en el repositorio. Estoy un poco decepcionado por el hecho de que todas las cosas de ramificación en git son inútiles para mí, ya que resulta que tendré que clonar mi repositorio proxy git para cada rama que quiera comenzar. Algo que ya hice para SVN y esperaba evitar con git. Por supuesto, no tengo que hacerlo, pero me haría hacer un nuevo maquillaje la mayor parte del tiempo después de cambiar de rama (no es divertido).