TFS से Git तक


14

मैं एक .NET डेवलपर हूं और मैंने अपने स्रोत नियंत्रण सॉफ्टवेयर के रूप में कई बार टीएफएस (टीम फाउंडेशन सर्वर) का उपयोग किया है। TFS की अच्छी विशेषताएं हैं:

  1. विज़ुअल स्टूडियो के साथ अच्छा एकीकरण (इसलिए मैं लगभग सब कुछ नेत्रहीन करता हूं; कोई कंसोल कमांड नहीं)
  2. आसान चेक-आउट, चेक-इन प्रक्रिया
  3. आसान विलय और संघर्ष समाधान
  4. आसान स्वचालित बनाता है
  5. शाखाओं में

अब, मैं अपने ओपन सोर्स प्रोजेक्ट्स के लिए बैकबोन, रिपॉजिटरी और सोर्स कंट्रोल के रूप में जीआईटी का उपयोग करना चाहता हूं। मेरी परियोजनाएँ C #, जावास्क्रिप्ट, या PHP भाषा में MySQL, या SQL सर्वर डेटाबेस के साथ भंडारण तंत्र के रूप में हैं।

मैंने बस इस उद्देश्य के लिए github.com की सहायता का उपयोग किया और मैंने वहां एक प्रोफ़ाइल बनाई, और गिट के लिए एक GUI डाउनलोड किया। इस भाग तक इतना आसान था।

लेकिन मैं लगभग किसी भी आगे जाने के लिए फंस गया हूं। मैं बस कुछ सरल (वास्तव में सरल) संचालन करना चाहता हूं, जिसमें शामिल हैं:

  1. Git पर एक प्रोजेक्ट बनाना और इसे मेरे लैपटॉप पर एक फ़ोल्डर में मैप करना
  2. फ़ाइलों और फ़ोल्डरों में जाँच / जाँच
  3. संघर्षों का समाधान

बस अब मुझे इतना ही करना है। लेकिन ऐसा लगता है कि GUI उपयोगकर्ता के अनुकूल नहीं है। मुझे उम्मीद है कि GUI के पास Connect To...ऐसा कुछ है, और फिर मैं उम्मीद करता हूं कि परियोजनाओं की एक सूची दिखाई जाए, और जब मैं किसी एक को चुनता हूं, तो मुझे उस परियोजना की फ़ाइलों और फ़ोल्डरों की सूची देखने की उम्मीद है, जैसे आपकी TFS परियोजना की खोज दृश्य स्टूडियो में। फिर मैं एक फ़ाइल पर राइट क्लिक करने में सक्षम होना चाहता हूं और उस तरह का चयन करें check-in...या check-outसामान।

क्या मुझे ज्यादा उम्मीद है? मुझे GFS को TFS की तरह आसानी से उपयोग करने के लिए क्या करना चाहिए? मुझे यहां क्या समझ नहीं आ रहा है?


8
मैंने एक साल पहले एसवीएन से स्विच किया, और मैं इसे लेकर बहुत खुश हूं। मैं कठोर कमांड लाइन हैटर को छोड़कर किसी को भी SVN की सिफारिश नहीं करूंगा। एक बार जब आप सीख लेते हैं, तो आप इसे पसंद करेंगे।
मआर्टिनस

14
ऐसा क्यों है कि विंडोज़ के लोग ग्राफ़िकल इंटरफेस के बारे में इतने जुनूनी हैं?
tdammers

8
@tdammers क्योंकि विंडोज पर कमांड लाइन नरक की तरह बेकार है? मुझे पता है, इसमें PowerShell है, लेकिन क्या वे इसका उपयोग करते हैं?
Maaartinus

3
@Saeed, एक शुरुआत के लिए, आप उम्मीद कर रहे हैं कि git में और बाहर फ़ाइलों की जाँच करने जैसी कोई चीज़ है। कोई भी प्रयोग करने योग्य वीसीएस वर्षों से नहीं है।
डैनियल रोजमैन

1
: अनुशंसित पढ़ ericsink.com/entries/vcbe_print_edition_free.html (। है कि अभी भी एक केंद्रीय सर्वर, मन इस्तेमाल कर सकते हैं) यह संस्करण नियंत्रण की मूल बातें और के बीच केंद्रीकृत कर दिया और विकेंद्रीकरण मतभेद बताते हैं
इंका

जवाबों:


19

जीसीएस क्या करना चाहिए, इसके बारे में कई पुरानी धारणाओं को उछालने से फायदे हुए हैं। नुकसान का अनुभव पूर्व अनुभव का लाभ उठाने में सक्षम नहीं होने और उन चीजों को करने में सक्षम नहीं होने से है जो आप के लिए उपयोग किए जाते हैं।

यदि आप किसी और चीज से स्विच करने जा रहे हैं, तबला-रस शुरू करने का प्रयास करें (हालांकि यह वास्तव में अभ्यास में असंभव है)। इसका मूल्यांकन करें कि यह क्या करता है और यह कितनी अच्छी तरह से करता है, न कि इस पर कि यह कैसे आप इसे करने के लिए उपयोग किया जाता है की तुलना में यह करता है। ऐसा नहीं है कि आप बहुत अधिक उम्मीद करते हैं, यह है कि आपकी अपेक्षाएं क्या प्रदान करती हैं इसके लिए रूढ़िवादी हैं। यदि आपने GUI ऑपरेशन से शादी की है, तो आप निराश होंगे। Git में gui टूल उपलब्ध हैं, लेकिन वे बहुत कुछ नहीं जोड़ते हैं। यह उन्हें प्रदान करने में विफलता नहीं है, क्योंकि कोई भी ऐसा नहीं है जो एक गुइ जोड़ सकता है। GitK दिन-प्रतिदिन के कार्यों में नहीं, बल्कि शाखा संरचना की कल्पना करने और इतिहास की जांच या खोज करने में मदद करता है।

यहाँ "ओर्थोगोनल" से मेरा तात्पर्य एक नासमझ सादृश्य है। एक अखबार के साथ आप जो कुछ कर सकते हैं, उसमें से एक मछली लपेटना है, या इसका उपयोग पक्षी को बचाने के लिए करना है। लेकिन वे एक समाचार पत्र के कार्य के लिए आवश्यक नहीं हैं, उन रूपों की आकस्मिक विशेषताएं हैं जो इसमें आती हैं। "फाइलों में जांच", या "आप परियोजनाओं का चयन करने की अनुमति दें" की अपेक्षा करते हैं, या "कनेक्ट ... "इस तरह की अपेक्षा है कि आप मछली को लपेटने में सक्षम हो सकते हैं या अखबार की वेबसाइट के साथ अपने पक्षी की देखभाल कर सकते हैं ।


ओह, मैं संपादन की व्याख्या करना भूल गया। मैंने बस अधिक कॉफी के लिए उठने और मेरे सिर में सादृश्य पॉप होने के बाद अंतिम पैराग्राफ जोड़ा।
काइलबेन

3
अंत में रूपक पसंद आया। +1
यम मार्कोविच

7

क्या आपने मेधावी माना है? Git की तरह, यह एक DCVS है और इससे आप सभी साफ-सुथरे काम कर सकते हैं, जो DCVS के साथ कर सकते हैं। जैसे गिट एक बहुत अच्छा है, क्लाउड-आधारित सेवा प्रदाता (बिटबकेट) है। लेकिन, git के विपरीत, विंडोज़ की कहानी बहुत अच्छी है, आप 2nd क्लास के नागरिक नहीं हैं। आपको अच्छे टूलिंग विकल्प (TortiseHG) और सुंदर सभ्य Visual Studio एकीकरण (VisualHG) मिले हैं।

दृश्य स्टूडियो में टीएफएस जैसा कुछ भी नहीं होने जा रहा है - दुनिया अभी उस तरह से तार-तार नहीं हुई है।


1
मैं सहमत हूँ, कुछ साल पहले मैं वीएसएस से मर्क्यूरियल में गया था और यह एक वास्तविक अवधि थी। अचानक मैं ऐसे काम कर सकता था जो मैंने कभी नहीं सोचा था कि यह व्यावहारिक होगा। फिर मैं svnबहुत सारी चीजों को ले गया और याद किया जो सिर्फ इतना आसान था hg। अब मैं gitमिश्रित भावनाओं के लिए आगे बढ़ रहा हूं । मुझे उन सुविधाओं में से कई को वापस पाने से प्यार है जो मुझे याद हैं svn, लेकिन मैं अभी भी hgअनावश्यक जटिलता की तुलना में सरलता को याद करता हूं git। यहां तक ​​कि सिर्फ खिड़कियों पर TortoiseGit स्थापित करने के लिए आपको उन हुप्स के माध्यम से कूदना पड़ता है जो केवल TortoiseHg के साथ आवश्यक नहीं हैं ।
मार्क बूथ

@ मर्क बूथ: मैं सहमत हूँ कि गिट बहुत उपयोगकर्ता के अनुकूल नहीं है, लेकिन अनावश्यक जटिलता क्या है ? स्थापना समस्याओं की गणना नहीं होती है, उन्हें TortoiseGit (जो एक अलग कार्यक्रम है) या विंडोज के लिए जिम्मेदार ठहराया जा सकता है।
मैार्टिनस

यह चैट पर बेहतर होगा, लेकिन मुझे इंडेक्स / कैश / स्टेजिंग क्षेत्र के लिए कोई आवश्यकता नहीं है, IMHO डिफ़ॉल्ट को आंशिक कमिट्स के विकल्प के साथ सब कुछ करने के लिए प्रतिबद्ध होना चाहिए, अगर अनुरोध किया गया है (बेहतर अभी भी आपके द्वारा किए गए परिवर्तनों को पूरा करने के लिए होगा 'तुरंत नहीं चाहते हैं, फिर से अपनी इकाई के परीक्षण, प्रतिबद्ध और फिर अनचाहे चलाएं)। जब मैं चाहता हूं कि मुझे स्पष्ट रूप से एक नई शाखा बनाने से नफरत है। एचजी के साथ एक अनाम शाखा चुपचाप बनाई जाती है जब भी आप एक गैर सिर के लिए प्रतिबद्ध होते हैं। गिट में, यदि आप बिना शाखा के एक सिर से दूर चले जाते हैं, तो आप संभावित रूप से इसे खो सकते हैं और फिर इसे कचरा एकत्र कर सकते हैं!
मार्क बूथ

6

मैंने एक साल पहले एसवीएन से स्विच किया, और मैं इसके बारे में बहुत खुश हूं। हालाँकि, मैं किसी भी GUI पर भरोसा नहीं कर रहा हूँ और यदि आप कमांड लाइन को सख्ती से मना करते हैं तो यह एक समस्या हो सकती है।

आप gitजिस तरह से उपयोग करने के लिए काम करने की उम्मीद कर रहे हैं लगता है, लेकिन यह नहीं है। यह कठिन नहीं है, लेकिन आपको आगे बढ़ने से पहले इसके सिद्धांतों पर एक नज़र डालनी चाहिए।

Git पर एक प्रोजेक्ट बनाना और इसे मेरे लैपटॉप पर एक फ़ोल्डर में मैप करना

Git वितरित किया जाता है, जिसका अर्थ है कि आप हमेशा अपने स्थानीय भंडार के साथ काम करते हैं, जिसे शून्य सहित किसी भी संख्या में रीमोट किया जा सकता है। जब मैं दूसरे प्रोजेक्ट का उपयोग कर रहा हूं, तो मैं दो रीमोट का उपयोग कर रहा हूं: उनका git या SVN रिपॉजिटरी और मेरा अपना सर्वर।

मैं हमेशा एक खाली निर्देशिका बनाकर शुरू करता हूं और फिर git initया git clone SOME-REMOTE-REPOSITORYयह लिंक आपकी मदद कर सकता है।

फ़ाइलों और फ़ोल्डरों में जाँच / जाँच

आप जो GUI उपयोग कर रहे हैं उसे लिखने में चूक गए। दोनों TortoiseGitऔर git-guiनिश्चित रूप से कर सकते हैं।

संघर्षों का समाधान

इसके लिए मैं git-guiअपने पसंदीदा टेक्स्ट एडिटर का उपयोग कर रहा हूं ।

मुझे उम्मीद है कि GUI के पास Connect To ... या ऐसा कुछ होगा

कनेक्ट करें क्या, जब 0 से एन रीमोट हो सकते हैं? Git किसी दूरस्थ सर्वर से जुड़ा नहीं रहता है, यह केवल अस्थायी रूप से और केवल दूरस्थ रिपॉजिटरी के साथ काम करने वाले कुछ कमांड के लिए कनेक्शन बनाता है। ज्यादातर काम स्थानीय स्तर पर ही होता है।

फिर मुझे उम्मीद है कि परियोजनाओं की एक सूची दिखाई जाएगी

मैं projectsतुम्हारे मतलब से मान रहा हूँ repositories

मुझे डर है कि ऐसी कोई बात नहीं है। रिमोट सर्वर पर Git केवल एक रिपॉजिटरी के साथ सख्ती से काम करता है। सभी रिपॉजिटरी को सूचीबद्ध करना उपनिर्देशिका वाले सभी निर्देशिकाओं को सूचीबद्ध करने के बराबर है .git। मुझे यकीन है कि ऐसा कुछ है GitHub

मैं एक का चयन करता हूं, मैं उस परियोजना की फ़ाइलों और फ़ोल्डरों की सूची देखने की उम्मीद करता हूं, जैसे खोज करना

फिर से, मुझे डर है कि gitस्थानीय स्तर पर काम करने के बाद से ऐसी कोई बात नहीं है । और फिर, यह बहुत काम का नहीं होगा। बस रिपॉजिटरी को क्लोन करें और इसे अपने कंप्यूटर पर देखें। हालांकि विशाल रेपोस के क्लोनिंग में कुछ समय लगता है, बाद के सभी ऑपरेशन बहुत तेज़ होते हैं, और आप किसी भी प्रतिबद्ध या शाखा को देख सकते हैं।

फिर मैं एक फ़ाइल पर राइट क्लिक करने में सक्षम होना चाहता हूं और चेक-इन ... या चेक-आउट और उस तरह का सामान चुन सकता हूं।

फिर, gitस्थानीय रूप से काम करता है। तो यह रिमोट रेपो में चेक-इन या चेक-आउट करने का कोई मतलब नहीं है। इस तरह से काम करना फास्ट लैन पर भी समय की बर्बादी है। अपने कंप्यूटर पर रिपॉजिटरी प्राप्त करें, इसके साथ काम करें और git pushरिमोट में परिवर्तन करें। अपने परिवर्तनों को प्रकाशित करने और बैकअप बनाने के बारे में भी इसके बारे में सोचें। आपको स्थानीय रूप से बहुत बार प्रतिबद्ध होना चाहिए ।

इससे पहले कि आप अपना काम शुरू करें, git fetchया git pullकिसी अन्य व्यक्ति के साथ काम करने के दौरान रिमोट से होने वाले बदलाव।

क्या मुझे ज्यादा उम्मीद है?

हां और ना। आप जो कुछ प्रदान करते हैं उससे अलग होने की उम्मीद करते हैं। आप कुछ बेहतर प्राप्त कर सकते हैं, gitशक्तिशाली है, लचीला है, सुरक्षित है, नरक की तरह तेज है, और वह सब कुछ कर सकते हैं जो आपको चाहिए, लेकिन यह बिल्कुल केंद्रीकृत वीसीएस नहीं करता है।


5

मैंने दृश्य स्रोत से पत्रिकाओं को tfs से svn तक git में सुरक्षित कर दिया है।

Vss से tfs में जाना एक सुखद अनुभव था। Tfs से svn में जाना एक सुखद अनुभव था। Svn से git में जाना एक आंतरिक लड़ाई की तरह है।

अक्सर मैं खुद को काफी रूढ़िवादी पाता हूं और जो काम करता है, उस पर लटकने की कोशिश करता हूं। कमांड लाइन पर मेरे लिए एक अच्छा गुई बेहतर है और मैंने खुद को कुछ ऐसे गुई के लिए खोजा, जो मुझे उन शांत बच्चों के साथ खेलने दें, जिनके साथ मैं काम करता हूं। वे सभी विशेष रूप से कमांड लाइन के साथ गिट का उपयोग करते थे।

मेरे लिए यूरेका मोमेंट एक बार आया जब मैंने एक सिल्वर बुलेट गुई की खोज को छोड़ दिया और git bash a try (मैं अभी भी सीख रहा हूँ) को देना शुरू कर दिया।

मेरे पास कुछ गिनी-चुनी चीजें हैं और वे कमांड लाइन से गिट सप्लीमेंट करते हैं। Git एक्सटेंशन, विजुअल स्टूडियो और कछुआ गिट के लिए Git स्रोत नियंत्रण प्रदाता। लेकिन मैं कहता हूं कि गिट बैश से परिचित होना चाहिए। आदेश थोड़ा गूढ़ हो सकते हैं लेकिन एक बार जब आप उन्हें सीख लेते हैं तो वे गुई की तुलना में बहुत तेज होते हैं।

अन्य लोगों की तुलना में git के साथ ब्रांचिंग सिर्फ AWESOME है। शाखाएं बनाएं और शाखाओं के बीच स्विच करना लगभग तत्काल है। आप वह सामान कर सकते हैं जो आप svn के साथ करने में परेशान नहीं होंगे क्योंकि svn मूल रूप से आपकी कार्यशील प्रतिलिपि (कम से कम जिस तरह से मैंने किया था) की नकल करता है।

मुझे लगता है कि sv के मुकाबले एक स्टेटर लर्निंग कर्व है। लेकिन एक बार जब आप इसे "गेट" कर लेते हैं तो आप वापस नहीं जाना चाहते।

सारे रास्ते पकड़ लेते हैं।


5

आपको एक सर्वर रखने की आदत है जो आपकी फ़ाइलों को संग्रहीत करता है और उनमें से सर्वव्यापी स्वामी है। किसी फ़ाइल को संपादित करने के लिए आपको सर्वर से अनुमति लेनी होगी।

Git ऐसा नहीं है। इस तरह से समझें: आपके पास अपना स्थानीय भंडार है। Git आपको परिवर्तन करने, रिवर्स कमिट करने, आसान और त्वरित ब्रांचिंग आदि करने देता है। जब आप अपने स्रोत-नियंत्रण इतिहास का बैकअप लेना चाहते हैं, तो आप अपने परिवर्तनों को किसी अन्य रिपॉजिटरी में धकेल देते हैं , जो कि GitHub.com की तरह "सर्वर" होता है।

कार्यप्रवाह:

  1. क्लोन (डाउनलोड) / रिपॉजिटरी बनाएँ
  2. कुछ बदलाव करें। दूसरों की परवाह किए बिना विकास जारी रखें।
  3. दूसरे रिपॉजिटरी में पुश करें (GitHub जैसा सर्वर हो सकता है)।
  4. जब आप एक रिपॉजिटरी में धकेलते हैं, तो दूसरे रिपॉजिटरी के मालिक को लंबित पुश के बारे में सूचित किया जाता है, और यह तय करना चाहिए कि क्या उन लोगों को स्वीकार करना है, उन्हें अस्वीकार करना है, या केवल उनका सबसेट लेना है।
  5. चक्र चलता रहता है।

बस इतना ही।


1

आपका क्या मतलब है, "" गिट गुई? अगर मैं सही तरीके से याद करूँ तो उनमें विजुअल स्टूडियो इंटीग्रेशन के लिए एक प्लगइन सहित एक गज़िलियन है। यदि कोई GUI आपके लिए काम नहीं करता है, तो जब तक आप ऐसा नहीं करते तब तक कुछ और प्रयास करें। मैं व्यक्तिगत रूप से विभिन्न कार्यों (और दूसरों के लिए सीएलआई) के लिए विभिन्न जीयूआई का उपयोग करता हूं।

हालांकि, गिट एक निश्चित प्रणाली की तुलना में एक संस्करण नियंत्रण ढांचे का अधिक है। आप अभी भी इसे से बाहर निकलने के लिए कुछ मूल बातें सीखना होगा।


-2

क्या मुझे ज्यादा उम्मीद है?

हाँ

मुझे GFS को TFS की तरह आसानी से उपयोग करने के लिए क्या करना चाहिए?

कुछ भी तो नहीं। Git CLI-centric है और इसमें कोई भी अच्छा दृश्यपटल नहीं है (मुझे TortoiseGit के बारे में पता है, जो उत्तर नहीं है, अन्य कछुआ की तुलना में *)। आप स्मार्टगिट (जावा से सावधान) का उपयोग करने की कोशिश कर सकते हैं


1
-1: फाइलों की जांच करना / सुलझाना और विरोधाभासों को स्रोत नियंत्रण से 'ज्यादा उम्मीद नहीं करना' है।
स्टीवन एवर्स

2
+1 दूरस्थ सर्वर से सीधे इनकी जाँच करने से कोई मतलब नहीं है। यह सिर्फ LAN पर भी धीमा है। ऐसी चीजें करना कुछ एफ़टीपी के लिए है, न कि वीसीएस।
Maaartinus

1
"चेक इन / आउट" फाइलें एक वीसीएस के लिए एक मौलिक ऑपरेशन नहीं है। यह ज्यादातर वीसीएस के लिए एक कार्यान्वयन सुविधा है, और इसमें सूक्ष्म लेकिन दुर्भाग्यपूर्ण दुष्प्रभाव हैं।
काइलबेन

2
@kylben: संस्करण नियंत्रण को देखने का एक तरीका / जांच करना है; संपादन-और-मर्ज एक और तरीका है। कुछ वीसीएस पूर्व दृष्टिकोण का उपयोग करते हैं, आपको विशेष ताले और व्यक्तिगत फ़ाइलों की जांच करने की क्षमता प्रदान करते हैं; अन्य लोग बाद को लेते हैं, और उन लोगों के साथ, आप संपूर्ण रिपॉजिटरी डाउनलोड करते हैं, अपने स्थानीय परिवर्तन करते हैं, और फिर उन्हें रिमोट पर वापस धकेल देते हैं; वीसीएस संदेह के मामले में आपके इनपुट के लिए पूछते हुए, परस्पर विरोधी बदलावों का प्रबंधन करता है। न तो दृष्टिकोण बेहतर है, लेकिन आप आमतौर पर एक वीसीएस को मोड़ नहीं सकते हैं जो इसके लिए नहीं बनाया गया है।
tdammers

1
'चेक इन / आउट' करके, मैं वास्तव में लॉक-आधारित वीसीएस को लागू करने के तरीके के बारे में बात कर रहा था, न कि आप संपादन के लिए स्रोत फ़ाइलों को कैसे डाउनलोड कर सकते हैं (जो कि वास्तव में हर वीसीएस ऐसा करने में सक्षम होना चाहिए)। तथ्य यह है कि कई VCS एक फ़ाइल को 'चेकआउट' के रूप में डाउनलोड करने की मात्र प्रक्रिया का संदर्भ देते हैं, एक मिथ्या नाम IMO का एक सा है - कुछ भी जाँच नहीं किया जाता है, और रिपॉजिटरी को याद नहीं है कि फ़ाइल किसके पास है।
tdammers
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.