दो प्रणालियों के बीच महत्वपूर्ण अंतर यह है कि TFS एक केंद्रीकृत संस्करण नियंत्रण प्रणाली है और Git एक वितरित संस्करण नियंत्रण प्रणाली है।
टीएफएस के साथ, रिपॉजिटरी को एक केंद्रीय सर्वर पर संग्रहीत किया जाता है और डेवलपर्स एक काम करने वाली कॉपी की जांच करते हैं, जो समय में एक विशिष्ट बिंदु पर कोड का एक स्नैपशॉट है। गिट के साथ, डेवलपर्स ने अपने मशीनों के लिए पूरे भंडार को क्लोन किया , जिसमें सभी इतिहास शामिल हैं।
सर्वर के मर जाने की स्थिति में आपके डेवलपर की मशीनों पर पूर्ण भंडार होने का एक लाभ अतिरेक है। एक और अच्छी बात यह है कि आप बिना सर्वर से बात किए बगैर संशोधनों के बीच अपनी वर्किंग कॉपी को आगे-पीछे कर सकते हैं, जो सर्वर डाउन होने या सिर्फ अगम्य होने पर मददगार हो सकता है।
मेरे लिए, वास्तविक वरदान है कि आप कर सकते हैं के लिए प्रतिबद्ध कभी सर्वर से बात कर या अपनी टीम पर संभावित अस्थिर परिवर्तन पहुंचाई (यानी, निर्माण तोड़ने) के बिना अपने स्थानीय भंडार को changesets।
उदाहरण के लिए, यदि मैं एक बड़ी सुविधा पर काम कर रहा हूं, तो मुझे इसे पूरी तरह से कोड करने और परीक्षण करने में एक सप्ताह लग सकता है। मैं अस्थिर-मध्य-सप्ताह में चेक-इन नहीं करना चाहता हूं और बिल्ड को तोड़ना चाहता हूं, लेकिन क्या होगा यदि मैं सप्ताह के अंत में पास हो जाऊं और मैं गलती से अपनी पूरी वर्किंग कॉपी को छोड़ दूं? अगर मैं अपने काम को पूरा करने के जोखिम के साथ खड़ा नहीं होता हूं। यह प्रभावी संस्करण नियंत्रण नहीं है, और TFS इसके लिए अतिसंवेदनशील है।
डीवीसीएस के साथ, मैं बिल्ड को तोड़ने की चिंता किए बिना लगातार प्रतिबद्ध कर सकता हूं, क्योंकि मैं स्थानीय रूप से अपने बदलाव कर रहा हूं । टीएफएस और अन्य केंद्रीकृत प्रणालियों में स्थानीय चेक-इन की कोई अवधारणा नहीं है।
मैं DVCS में कितना बेहतर ब्रांचिंग और मर्जिंग कर रहा हूं, लेकिन आप SO या Google के माध्यम से यहां पर कई स्पष्टीकरण पा सकते हैं। मैं आपको अनुभव से बता सकता हूं कि TFS में ब्रांचिंग और विलय अच्छा नहीं है।
यदि आपके संगठन में TFS के लिए तर्क यह है कि यह Git की तुलना में Windows पर बेहतर काम करता है, तो मैं Mercurial का सुझाव दूंगा, जो Windows पर बहुत अच्छा काम करता है - Windows Explorer (TortoiseHg) और Visual Studio (VisualHg) के साथ एकीकरण है।