तोड़फोड़, तोड़फोड़ से बेहतर नहीं है। लेकिन भी बदतर नहीं है। ये अलग है।
मुख्य अंतर यह है कि यह विकेंद्रीकृत है। कल्पना कीजिए कि आप सड़क पर एक डेवलपर हैं, आप अपने लैपटॉप पर विकसित होते हैं और आप स्रोत नियंत्रण चाहते हैं ताकि आप 3 घंटे पीछे जा सकें।
तोड़फोड़ के साथ, आपको एक समस्या है: SVN रिपॉजिटरी एक ऐसे स्थान पर हो सकती है जहां आप (आपकी कंपनी में, और आपके पास फिलहाल इंटरनेट नहीं है), आप प्रतिबद्ध नहीं हो सकते। यदि आप अपने कोड की एक प्रतिलिपि बनाना चाहते हैं, तो आपको इसे सचमुच कॉपी / पेस्ट करना होगा।
Git के साथ, आपको यह समस्या नहीं है। आपकी स्थानीय प्रति एक भंडार है, और आप इसे कर सकते हैं और स्रोत नियंत्रण के सभी लाभ प्राप्त कर सकते हैं। जब आप मुख्य रिपॉजिटरी से कनेक्टिविटी दोबारा हासिल करते हैं, तो आप इसके खिलाफ प्रतिबद्ध हो सकते हैं।
यह पहली बार में अच्छा लग रहा है, लेकिन बस इस दृष्टिकोण के लिए जोड़ा जटिलता को ध्यान में रखें।
Git "नई, चमकदार, शांत" चीज़ लगती है। यह किसी भी तरह से खराब नहीं है (एक कारण है कि लिनस ने इसे लिनक्स कर्नेल विकास के लिए लिखा है), लेकिन मुझे लगता है कि बहुत से लोग "डिस्ट्रिब्यूटेड सोर्स कंट्रोल" ट्रेन पर कूदते हैं क्योंकि यह नया है और लिनुस टोरवाल्ड्स द्वारा लिखा गया है, वास्तव में बिना यह जानना / क्यों बेहतर है।
तोड़फोड़ की समस्याएँ हैं, लेकिन Git, Mercurial, CVS, TFS या जो भी है।
संपादित करें: तो यह उत्तर अब एक साल पुराना है और अभी भी कई अपवित्र बनाता है, इसलिए मैंने सोचा कि मैं कुछ और स्पष्टीकरण जोड़ूंगा। यह लिखने के बाद से पिछले वर्ष में, गिट ने बहुत अधिक गति और समर्थन प्राप्त किया है, खासकर जब से गीथहब जैसी साइटें वास्तव में बंद हो गईं। मैं आजकल Git और Subversion दोनों का उपयोग कर रहा हूं और कुछ व्यक्तिगत जानकारी साझा करना चाहता हूं।
विकेन्द्रीकृत काम करते समय सबसे पहले, गिट वास्तव में भ्रमित हो सकता है। रिमोट क्या होता है? और प्रारंभिक रिपॉजिटरी को ठीक से कैसे स्थापित करें? शुरुआत में आने वाले दो प्रश्न हैं, विशेष रूप से SVN के सरल "svnadmin create" की तुलना में, Git के "git init" पैरामीटर को ले जा सकते हैं --bare और - sered जो एक केंद्रीकृत सेट करने के लिए "उचित" तरीका लगता है। भंडार। इसके कारण हैं, लेकिन यह जटिलता जोड़ता है। "चेकआउट" कमांड का दस्तावेज़ीकरण लोगों को बदलने पर बहुत भ्रमित करता है - "उचित" तरीका "गिट क्लोन" लगता है, जबकि "गिट चेकआउट" शाखाओं को स्विच करने के लिए लगता है।
जब आप विकेंद्रीकृत होते हैं, तो वास्तव में चमकता है। मेरे पास घर पर एक सर्वर और सड़क पर एक लैपटॉप है, और एसवीएन बस यहां अच्छी तरह से काम नहीं करता है। एसवीएन के साथ, अगर मैं रिपॉजिटरी से जुड़ा नहीं हूं तो स्थानीय स्रोत नियंत्रण नहीं हो सकता है (हां, मुझे एसवीके के बारे में या रेपो की नकल करने के तरीकों के बारे में पता है)। Git के साथ, यह वैसे भी डिफ़ॉल्ट मोड है। हालांकि यह एक अतिरिक्त कमांड है (git कमिट स्थानीय रूप से, जबकि git पुश ओरिजिन मास्टर "मूल" नाम के रिमोट से मास्टर ब्रांच को पुश करता है)।
जैसा कि ऊपर कहा गया है: गिट जटिलता जोड़ता है। रिपॉजिटरी बनाने के दो तरीके, चेकआउट बनाम क्लोन, कमिट बनाम पुश ... आपको यह जानना होगा कि कौन से कमांड स्थानीय स्तर पर काम करते हैं और जो "सर्वर" के साथ काम करते हैं (मैं अभी भी ज्यादातर लोगों को केंद्रीय "मास्टर-रिपॉजिटरी" की तरह मान रहा हूं )।
इसके अलावा, टूलिंग अभी भी अपर्याप्त है, कम से कम विंडोज पर। हां, एक विजुअल स्टूडियो ऐड है, लेकिन मैं अभी भी msysgit के साथ git bash का उपयोग करता हूं।
SVN का यह फायदा है कि यह सीखने के लिए बहुत सरल है: आपकी रिपॉजिटरी है, इसके प्रति सभी परिवर्तन होते हैं, यदि आप जानते हैं कि कैसे बनाएं, कमिट करें और चेकआउट करें और आप जाने के लिए तैयार हैं और बाद में ब्रांचिंग, अपडेट आदि जैसे सामान पिक कर सकते हैं। पर।
अगर कुछ डेवलपर्स हमेशा मास्टर रिपॉजिटरी से नहीं जुड़े होते हैं तो Git का यह फायदा है कि यह MUCH बेहतर अनुकूल है। इसके अलावा, यह SVN की तुलना में बहुत तेज़ है। और जो मैं सुनता हूं, ब्रांचिंग और मर्जिंग सपोर्ट बहुत बेहतर है (जिसकी उम्मीद की जानी चाहिए, क्योंकि ये मुख्य कारण हैं जो इसे लिखा गया था)।
यह भी बताता है कि यह इंटरनेट पर इतनी चर्चा क्यों हासिल करता है, क्योंकि गेट ओपन सोर्स प्रोजेक्ट्स के लिए पूरी तरह से अनुकूल है: बस इसे कांटा, अपने खुद के फोर्क में अपने बदलाव करें, और फिर मूल प्रोजेक्ट अनुचर से अपने परिवर्तनों को खींचने के लिए कहें। गिट के साथ, यह सिर्फ काम करता है। वास्तव में, इसे गितुब पर आज़माएं, यह जादू है।
मैं Git-SVN ब्रिज भी देख रहा हूं: सेंट्रल रिपॉजिटरी एक सबवर्सन रेपो है, लेकिन डेवलपर्स स्थानीय रूप से Git और ब्रिज के साथ काम करते हैं और फिर SVN में अपने बदलावों को आगे बढ़ाते हैं।
लेकिन इस लंबे जोड़ के साथ, मैं अभी भी अपने मूल संदेश के साथ खड़ा हूं: Git बेहतर या बदतर नहीं है, यह सिर्फ अलग है। यदि आपको "ऑफ़लाइन स्रोत नियंत्रण" की आवश्यकता है और इसे सीखने में कुछ अतिरिक्त समय बिताने की इच्छा है, तो यह शानदार है। लेकिन अगर आपके पास कड़ाई से केंद्रीकृत स्रोत नियंत्रण है और / या पहली बार में स्रोत नियंत्रण शुरू करने के लिए संघर्ष कर रहे हैं, क्योंकि आपके सहकर्मी रुचि नहीं रखते हैं, तो एसवीएन चमक की सादगी और उत्कृष्ट टूलिंग (कम से कम विंडोज पर)।