İki sistem arasındaki temel fark TFS'nin merkezi bir sürüm kontrol sistemi ve Git'in dağıtılmış bir sürüm kontrol sistemi olmasıdır.
TFS ile depolar merkezi bir sunucuda depolanır ve geliştiriciler kodun belirli bir zamanda anlık görüntüsü olan çalışan bir kopyayı teslim alır . Git ile geliştiriciler, tüm tarih de dahil olmak üzere tüm veri havuzunu makinelerine kopyalar.
Tam deponun geliştiricinizin makinelerinde olmasının bir yararı, sunucunun ölmesi durumunda artıklıktır. Bir başka güzel yetenek ise, sunucunuzla konuşmadan çalışma kopyanızı revizyonlar arasında ileri geri hareket ettirebilmenizdir, bu da sunucu çalışmıyorsa veya erişilemiyorsa yardımcı olabilir.
Bana göre, gerçek nimet sen olmasıdır taahhüt hiç sunucuya konuşurken ya da (yani yapı kırma) ekibinizde potansiyel olarak istikrarsız değişiklikleri maruz kalmadan yerel havuzuna changesets.
Örneğin, büyük bir özellik üzerinde çalışıyorsam, kodlamam ve tamamen test etmem bir hafta sürebilir. Kararsız kodu hafta ortasında kontrol etmek ve yapıyı kırmak istemiyorum, ancak hafta sonuna yaklaştığımda ve yanlışlıkla tüm çalışma kopyamı doldurursam ne olur? Başından beri taahhütte bulunmazsam işimi kaybetme riski taşıyorum. Bu etkili bir sürüm kontrolü değildir ve TFS buna duyarlıdır.
DVCS ile, yapıyı bozma konusunda endişelenmeden sürekli taahhütte bulunabilirim, çünkü değişikliklerimi yerel olarak taahhüt ediyorum . TFS ve diğer merkezi sistemlerde yerel bir check-in konsepti yoktur.
DVCS'de daha iyi dallanma ve birleştirmenin ne kadar iyi olduğuna bile girmedim, ancak burada SO'da veya Google'da tonlarca açıklama bulabilirsiniz. TFS'de dallanma ve birleşmenin iyi olmadığını deneyimlerimden söyleyebilirim.
Kuruluşunuzdaki TFS'nin argümanı Windows'ta Git'ten daha iyi çalışıyorsa, Windows'ta harika çalışan Mercurial'ı öneririm - Windows Gezgini (TortoiseHg) ve Visual Studio (VisualHg) ile entegrasyon var.