в принципе технически можно держать git прямо над TFS, но не очень удобно
предлагаю следующий вариант:
1й git держится над TFS (в той же папке куда распаковывается TFS), через .gitignore баним TFS овы файлы(если есть) ну и обратное уже про .git
2й git держится в рабочей папке, и синхронизирован с первым
на 1м делам ветку типа overTFS
2й может свободно делать PUSH и PULL
схема обновления — после апдейта TFS коммитить все изменения в git
в случае обновления git делать checkout и коммитить в TFS (можно автоматизировать через хуки)
чтобы можно было пушить в активную ветку 1го репозитория пропишите конфиг
[receive]
denycurrentbranch = ignore
вот как то так можно это всё держать, возможно TFS умеет хуки, в любом случае этим можно управлять при помощи пары скриптов
минус — комменты к коммитам, будут теряться, хотя конечно можно собирать все комменты с предидущей синхронизации,git это позволяет