La differenza fondamentale tra i due sistemi è che TFS è un sistema di controllo versione centralizzato e Git è un sistema di controllo versione distribuito.
Con TFS, i repository sono archiviati su un server centrale e gli sviluppatori eseguono il checkout di una copia funzionante, che è un'istantanea del codice in un determinato momento. Con Git, gli sviluppatori clonano l' intero repository sui loro computer, compresa tutta la cronologia.
Un vantaggio di avere il repository completo sulle macchine dello sviluppatore è la ridondanza nel caso in cui il server muoia. Un altro vantaggio è che puoi spostare la tua copia di lavoro avanti e indietro tra le revisioni senza mai parlare con il server, il che può essere utile se il server è inattivo o semplicemente irraggiungibile.
Per me, il vero vantaggio è che puoi eseguire il commit dei changeset nel tuo repository locale senza mai parlare con il server o infliggere modifiche potenzialmente instabili al tuo team (ovvero, interrompere la build).
Ad esempio, se sto lavorando a una grande funzionalità, potrebbe volerci una settimana per programmare e testarlo completamente. Non voglio effettuare il check-in del codice instabile a metà settimana e interrompere la build, ma cosa succede se mi sto avvicinando alla fine della settimana e accidentalmente eseguo il bork dell'intera mia copia di lavoro? Se non mi impegno da sempre, corro il rischio di perdere il lavoro. Questo non è un controllo efficace della versione e TFS è suscettibile a questo.
Con DVCS, posso impegnarmi costantemente senza preoccuparmi di interrompere la build, perché sto impegnando le mie modifiche a livello locale . In TFS e altri sistemi centralizzati non esiste il concetto di un check-in locale.
Non ho nemmeno approfondito il modo in cui le ramificazioni e le fusioni sono migliori in DVCS, ma puoi trovare tonnellate di spiegazioni qui su SO o tramite Google. Posso dirti per esperienza che la ramificazione e l'unione in TFS non è buona.
Se l'argomento per TFS nella tua organizzazione è che funziona meglio su Windows che su Git, suggerirei Mercurial, che funziona benissimo su Windows: c'è l'integrazione con Windows Explorer (TortoiseHg) e Visual Studio (VisualHg).