La principale différence entre les deux systèmes est que TFS est un système de contrôle de version centralisé et Git est un système de contrôle de version distribué.
Avec TFS, les référentiels sont stockés sur un serveur central et les développeurs récupèrent une copie de travail, qui est un instantané du code à un moment précis. Avec Git, les développeurs clonent l' intégralité du référentiel sur leurs machines, y compris l'ensemble de l'historique.
Un avantage d'avoir le référentiel complet sur les machines de votre développeur est la redondance au cas où le serveur mourrait. Un autre avantage intéressant est que vous pouvez déplacer votre copie de travail entre les révisions sans jamais parler au serveur, ce qui peut être utile si le serveur est en panne ou simplement inaccessible.
Pour moi, la véritable aubaine est que vous pouvez valider des ensembles de modifications dans votre référentiel local sans jamais parler au serveur ou infliger des modifications potentiellement instables à votre équipe (c'est-à-dire rompre la build).
Par exemple, si je travaille sur une grosse fonctionnalité, cela pourrait prendre une semaine pour coder et tester complètement. Je ne veux pas archiver le code instable en milieu de semaine et interrompre la construction, mais que se passe-t-il si je m'approche de la fin de la semaine et que je falsifie accidentellement l'intégralité de ma copie de travail? Si je ne m'engage pas depuis le début, je risque de perdre mon travail. Ce n'est pas un contrôle de version efficace, et TFS y est sensible.
Avec DVCS, je peux m'engager constamment sans me soucier de casser la construction, car je valide mes modifications localement . Dans TFS et d'autres systèmes centralisés, il n'y a pas de concept d'enregistrement local.
Je ne suis même pas allé dans la mesure où la branche et la fusion sont meilleures en DVCS, mais vous pouvez trouver des tonnes d'explications ici sur SO ou via Google. Je peux vous dire par expérience que le branchement et la fusion dans TFS n'est pas bon.
Si l'argument pour TFS dans votre organisation est qu'il fonctionne mieux sur Windows que Git, je suggère Mercurial, qui fonctionne très bien sur Windows - il existe une intégration avec Windows Explorer (TortoiseHg) et Visual Studio (VisualHg).