विज्ञापन
वेब डेवलपर्स के रूप में, हम स्थानीय विकास साइटों पर काम करने के लिए बहुत समय लगाते हैं, फिर जब हम काम करते हैं तो बस सब कुछ अपलोड करते हैं। यह ठीक है जब यह सिर्फ आप और परिवर्तन छोटे हैं, लेकिन जब आप एक से अधिक के साथ काम कर रहे हैं किसी चीज़ पर काम करने वाला व्यक्ति, या बहुत सारे जटिल घटकों के साथ एक बड़ी परियोजना पर, यह बस नहीं है संभव। जब हम किसी चीज को संस्करण नियंत्रण कहते हैं।
आज मैं एक ओपन सोर्स वर्जन कंट्रोल सॉफ्टवेयर के बारे में बात करूंगा जिसे Git कहा जाता है। यह एक से अधिक लोगों को एक-दूसरे के साथ हस्तक्षेप किए बिना एक ही परियोजना पर सुरक्षित रूप से काम करने की अनुमति देता है, लेकिन यह उससे बहुत अधिक है।
क्यों संस्करण नियंत्रण सॉफ्टवेयर का उपयोग करें?
सबसे पहले और सबसे महत्वपूर्ण, नाम इसे दूर करना चाहिए। संस्करण नियंत्रण सॉफ्टवेयर आपको एक परियोजना के "संस्करण" रखने की अनुमति देता है, जो समय के साथ कोड में किए गए परिवर्तनों को दिखाते हैं, और यदि आवश्यक हो तो उन परिवर्तनों को पीछे हटाने और आपको अनुमति देता है। अकेले यह क्षमता - दो संस्करणों या विपरीत परिवर्तनों की तुलना करने में सक्षम होने के कारण, बड़ी परियोजनाओं पर काम करते समय इसे काफी अमूल्य बनाता है।
आपने शायद किसी बिंदु पर स्वयं भी ऐसा किया हो, किसी प्रोजेक्ट की प्रतियों को विभिन्न बिंदुओं पर सहेजना ताकि आपके पास बैकअप हो। एक संस्करण नियंत्रण प्रणाली में, बस परिवर्तनों को बचाया जाएगा - एक पैच फ़ाइल जिसे एक संस्करण में लागू किया जा सकता है, ताकि यह अगले संस्करण के समान हो सके। एक डेवलपर के साथ, यह पर्याप्त है।
लेकिन क्या होगा यदि आपके पास एक प्रोजेक्ट पर काम करने वाले एक से अधिक डेवलपर हैं? जब एक केंद्रीकृत संस्करण नियंत्रण सर्वर का विचार आता है। ये लंबे समय तक मानक रहे हैं, जिसके तहत सभी संस्करणों को एक केंद्रीय सर्वर पर संग्रहीत किया जाता है, और अलग-अलग डेवलपर्स चेकआउट करते हैं और इस सर्वर पर वापस परिवर्तन अपलोड करते हैं। यदि आपने कभी किसी विकिपीडिया पृष्ठ के संपादित इतिहास को देखा है, तो आपको यह अच्छी तरह पता नहीं होगा कि यह वास्तविक दुनिया में कैसे काम करता है:
इस तरह की प्रणाली का लाभ यह है कि कई डेवलपर्स परिवर्तन कर सकते हैं, और प्रत्येक परिवर्तन को फिर एक विशिष्ट डेवलपर के लिए जिम्मेदार ठहराया जा सकता है। नकारात्मक पक्ष पर, तथ्य यह है कि सब कुछ एक दूरस्थ डेटाबेस पर संग्रहीत है इसका मतलब यह है कि उस सर्वर के नीचे जाने पर कोई परिवर्तन नहीं किया जा सकता है; और अगर केंद्रीय डेटाबेस खो गया है, तो प्रत्येक ग्राहक के पास केवल वर्तमान संस्करण है जो वे काम कर रहे थे।
यह हमें Git, और अन्य तथाकथित पर ले जाता है वितरित संस्करण नियंत्रण प्रणाली। इन प्रणालियों में, क्लाइंट केवल फ़ाइलों के वर्तमान संस्करण की जांच नहीं करते हैं और उनसे काम करते हैं - वे पूरे संस्करण इतिहास को प्रतिबिंबित करते हैं। प्रत्येक डेवलपर के पास हमेशा हर चीज की पूरी कॉपी होती है। एक केंद्रीय सर्वर अभी भी उपयोग किया जाता है, लेकिन सबसे खराब होना चाहिए, फिर भी उन सभी क्लाइंट्स में से कुछ को फिर से बहाल किया जा सकता है जिनके पास नवीनतम संस्करण हैं।
Git विशेष रूप से फाइलों का "स्नैपशॉट" लेकर काम करता है; यदि फ़ाइलें किसी विशेष संस्करण में अपरिवर्तित रहती हैं, तो यह केवल पिछली फ़ाइलों से लिंक होती है - यह सब कुछ तेज और दुबला रखती है।
आपको यह जानने में भी रुचि हो सकती है कि Git का प्रबंधन और विकास करने के लिए किया जाता है कोर लिनक्स कर्नेल - बेस बिल्डिंग ब्लॉक जिस पर सभी लिनक्स डिस्ट्रो का निर्माण किया जाता है।
गीथब क्या है?
यद्यपि आप स्थानीय रूप से अपना स्वयं का Git सर्वर चला सकते हैं, Github एक दूरस्थ सर्वर, डेवलपर्स का एक समुदाय और आपके Git प्रोजेक्ट के प्रबंधन के लिए एक ग्राफिकल वेब इंटरफ़ेस है। यह 5 सार्वजनिक रिपॉजिटरी के लिए उपयोग करने के लिए नि: शुल्क है - अर्थात, जब कोई भी आपके कोड को देख या कांटा कर सकता है - निजी परियोजनाओं के लिए कम लागत वाली योजनाओं के साथ। मैं दृढ़ता से सुझाव देता हूं कि आप एक निःशुल्क खाते के लिए साइन अप करें ताकि आप अपने स्वयं के प्रोजेक्ट्स के साथ खेलना शुरू कर सकें या किसी व्यक्ति को धन्यवाद दे सकें।
फोर्किंग और ब्रांचिंग
ये Git अनुभव की मुख्य अवधारणाएँ हैं, इसलिए अंतर को स्पष्ट करने के लिए कुछ समय दें।
संभवतः आपने लिनक्स डिस्ट्रोस के साथ काम करते समय "कांटा" सुना है। यदि आप मीडिया सेंटर ऐप Plex से परिचित हैं, तो आपको पता होगा कि यह मूल रूप से समान खुले स्रोत का एक कांटा था Xbox मीडिया सेंटर Aeon Nox 3.5: XBMC के लिए सुंदर और अनुकूलन थीमअपने मीडिया सेंटर को ठीक उसी तरह सेट करें जैसा आप चाहते हैं। Aeon Nox 3.5 XBMC के लिए सबसे अच्छा विषय क्या है का सबसे हाल का संस्करण है, और यह एक दुर्लभ संयोजन है: ... अधिक पढ़ें . इसका सीधा सा मतलब है कि अतीत में कुछ बिंदुओं पर, कुछ डेवलपर्स ने XBMC का कोड लिया, और इसके साथ अपने तरीके से जाने का फैसला किया; वह Plex बन गया।
यह निश्चित रूप से पूरी तरह से अनुमत है जब परियोजना खुला स्रोत है - आप कोड ले सकते हैं, जो कुछ भी आप इसके साथ चाहते हैं वह करें। गिट के साथ, यदि आपको लगता है कि आपके बदलाव काफी अच्छे हैं, तो आपको "मास्टर" प्रोजेक्ट में वापस लाया जाएगा लेखक को एक "पुल अनुरोध" बना सकते हैं, जिससे उन्हें अपने परिवर्तनों को वापस अपने मूल में खींचने के लिए कहा जा सकता है परियोजना। यह आपको किसी भी बिंदु पर किसी प्रोजेक्ट पर काम करने वाले सैकड़ों हजारों डेवलपर्स की अनुमति देता है, जिनमें से किसी को भी नहीं होना चाहिए आमतौर पर कोड एक्सेस के लिए अनुमोदित किया जाता है - वे सिर्फ कोड की प्रतिलिपि बनाते हैं, परिवर्तन करते हैं, और वापस रोल करने का अनुरोध करते हैं गुरुजी। बेशक, यह मूल परियोजना के मालिक पर निर्भर है कि वे आपके बदलावों को स्वीकार करते हैं या नहीं।
शाखाओं को अधिकृत डेवलपर्स द्वारा एक परियोजना पर आंतरिक रूप से किया जाता है। यह आपको आसानी से विशिष्ट मुद्दों या विशेषताओं को अलग करने की अनुमति देता है, और मास्टर फ़ाइलों को तोड़ने के बिना उन पर काम करता है। एक बार जब आप संतुष्ट हो जाते हैं कि आपकी शाखा ने इस समस्या से निपटा है, तो आप इसे वापस मास्टर में विलय कर देते हैं। किसी भी बिंदु पर, जितनी चाहें उतनी शाखाएं हो सकती हैं; वे एक दूसरे के साथ हस्तक्षेप नहीं करते हैं। आप मास्टर को छूने के बिना शाखाओं के बीच परिवर्तनों को मर्ज भी कर सकते हैं।
यहाँ उदाहरण वर्कफ़्लो का एक शानदार चित्र है विन्सेन्ट ड्रिस्सेन:
अगली बार, हम कार्यशील Git उदाहरण सेट करने और शाखाओं के भीतर कोड परिवर्तन करने का तरीका देखेंगे। संस्करण नियंत्रण एक बहुत बड़ा विषय है। मैंने केवल यहाँ संक्षिप्त विवरण दिया है, लेकिन एक ऐसे डेवलपर के रूप में जो केवल बदलाव करने और उन्हें काम में लाने के लिए उपयोग किया जाता है यदि वे काम नहीं करते हैं, तो पूरी अवधारणा ने मेरा दिमाग उड़ा दिया है - मुझे उम्मीद है कि यह आपका भी होगा।
क्या आप Git में अनुभव के साथ एक अनुभवी डेवलपर हैं? क्या आप अभी शुरुआत कर रहे हैं और सोचते हैं कि आप जाना चाहते हैं? टिप्पणियों में विचार व्यक्त करो!
जेम्स के पास आर्टिफिशियल इंटेलिजेंस में बीएससी है, और कॉम्पिटिया ए + और नेटवर्क + प्रमाणित है। वह MakeUseOf के प्रमुख डेवलपर हैं, और अपना खाली समय वीआर पेंटबॉल और बोर्डगेम खेलने में बिताते हैं। वह पीसी का निर्माण कर रहा है क्योंकि वह एक बच्चा था।