То, что вы хотите, это полный контекст, а не просто ветвь ... которая обычно выходит за рамки возможностей инструмента контроля версий. Лучший способ сделать это - использовать несколько репозиториев.
Не беспокойтесь о неэффективности этого, хотя ... Сделайте ваш второй репозиторий клоном первого. Git будет автоматически использовать ссылки, чтобы избежать нескольких копий на диске.
Вот хак, чтобы дать вам, что вы хотите
Поскольку у вас есть отдельные каталоги obj, вы можете изменить ваши Makefiles, чтобы сделать базовое расположение динамическим, используя что-то вроде этого:
OBJBASE = `git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1\//'`
OBJDIR = "$(OBJBASE).obj"
# branch master: OBJBASE == "master/", OBJDIR == "master/.obj"
# non-git checkout: OBJBASE == "", OBJDIR == ".obj"
Это будет имя вашего филиала в OBJBASE, из которого вы можете использовать свое фактическое местоположение objdir. Я оставлю это вам, чтобы изменить его в соответствии с вашей средой и сделать его дружественным для не-git пользователей ваших Makefiles.