Git क्या है?


आप लगभग निश्चित रूप से हाथ से संस्करण नियंत्रण कर चुके होंगे। एक फ़ोल्डर जिसमें report.docx, report_final.docx, report_final_v2.docx, और report_final_ACTUAL.docx है, यह संस्करण नियंत्रण है, सबसे बुरे संभावित तरीके का। आप यह नहीं बता सकते कि इन दोनों फ़ाइलों के बीच क्या बदला, आप दो लोगों द्वारा एक ही समय में किए गए संपादन को मर्ज नहीं कर सकते, और आप निश्चित रूप से उस अच्छे पैराग्राफ को वापस नहीं ला सकते जिसे आपने तीन प्रतियां पहले हटाया था।
Git इस समस्या को सही तरीके से हल करता है। यह एक ऐसा उपकरण है जो समय के साथ आपकी परियोजना के स्नैपशॉट रिकॉर्ड करता है, इसलिए आपका पूरा इतिहास एक जगह पर रहता है बजाय प्रतियों के ढेर के। यह उपकरण एक छोटा प्रोग्राम है जो आपके अपने कंप्यूटर पर रहता है: आप टर्मिनल में git से शुरू होने वाली कमांड टाइप करते हैं, और यह पाठ में उत्तर देता है।
Git आपके लिए क्या करता है
मूल रूप से, Git आपकी परियोजना का एक समयरेखा रखता है। हर बार जब आप सहेजने के योग्य किसी बिंदु तक पहुंचते हैं, तो आप एक commit रिकॉर्ड करते हैं: हर फ़ाइल का एक स्नैपशॉट, साथ ही एक छोटा संदेश जो बताता है कि क्या बदला और क्यों। बाद में आप उस समयरेखा पर वापस देख सकते हैं और देख सकते हैं कि परियोजना वहां कैसे पहुंची। यहाँ एक वास्तविक समयरेखा है, git log द्वारा मुद्रित, जो कमांड है जो एक परियोजना की commits को सूचीबद्ध करता है (--oneline flag प्रत्येक को एक लाइन तक छोटा करता है):
$ git log --oneline
a1b2c3d Add password strength meter
9f8e7d6 Fix signup form validation
5c4b3a2 Set up project structureये एक परियोजना के इतिहास में तीन सहेजे गए बिंदु हैं, शीर्ष पर सबसे नए, प्रत्येक के साथ एक छोटा ID और इसके लेखक द्वारा लिखा संदेश। (इस जैसे हर उदाहरण में, $ से शुरू होने वाली लाइन एक टर्मिनल में टाइप की गई कमांड है, $ स्वयं को छोड़कर, और नीचे की लाइनें Git की प्रतिक्रिया हैं।) आप अगले कुछ अध्यायों में हर कमांड सीखेंगे जो इस इतिहास को बनाती और पढ़ती है। अभी के लिए विचार यह है कि Git आपके काम को स्नैपशॉट की एक श्रृंखला के रूप में रिकॉर्ड कर रहा है जिस पर आप हमेशा वापस जा सकते हैं।
एक बार जब आपकी परियोजना के पास इस तरह का इतिहास होता है, तो बहुत कुछ संभव हो जाता है। आप देख सकते हैं कि क्या बदला और किसने बदला। आप किसी जोखिम भरे विचार को अलग से आज़मा सकते हैं और यदि यह काम नहीं करता है तो इसे साफ तरीके से फेंक सकते हैं। आप पूरी परियोजना, इसके पूरे इतिहास के साथ, किसी और को सौंप सकते हैं। और जब दो लोग एक ही कोड को संपादित करते हैं, तो Git उनके काम को जोड़ सकता है और उन स्थानों को चिह्नित कर सकता है जहां वे असहमत हैं ताकि कोई इंसान उन्हें हल कर सके। ये चार क्षमताएं, इतिहास, सुरक्षित प्रयोग, साझाकरण, और काम को जोड़ना, वह पूरा कारण हैं कि Git लगभग हर पेशेवर codebase के तहत चलता है।
final_v2_ACTUAL प्रतियों का ढेर वह समस्या है जिसे Git खत्म करने के लिए बनाया गया था, और मैं वादा करता हूं कि पहली बार जब आप एक को हटाते हैं तो यह शानदार महसूस होता है। Git और GitHub अलग-अलग चीजें हैं
यह शुरुआत में लगभग हर किसी को भ्रमित करता है, इसलिए यहाँ यह स्पष्ट शब्दों में है। Git संस्करण-नियंत्रण उपकरण है। यह आपके अपने कंप्यूटर पर चलता है, यह आपकी commits को रिकॉर्ड करता है, और इसे काम करने के लिए कोई internet कनेक्शन और कोई खाता नहीं चाहिए। GitHub एक वेबसाइट है जो Git repositories को online संग्रहीत करता है और उनके चारों ओर चीजें जोड़ता है: अपना कोड साझा करने, एक-दूसरे के परिवर्तनों की समीक्षा करने, समस्याओं की रिपोर्ट करने, और सहयोग करने के लिए एक जगह।
अंतर को महसूस करने का सबसे स्पष्ट तरीका: आप हर दिन Git का उपयोग कर सकते हैं, अपने laptop पर committing और branching कर सकते हैं, कभी भी एक GitHub खाता बनाए बिना। GitHub केवल तभी चित्र में आता है जब आप अपनी repository को कहीं साझा स्थान पर रखना चाहते हैं ताकि अन्य लोग, या अन्य मशीनें, इसे पहुंच सकें। Git इंजन है; GitHub एक जगह है जहां इसकी पैदावार को host करते हैं। अन्य मौजूद हैं, जैसे GitLab और Bitbucket, और वे सभी नीचे एक ही Git repositories को host करते हैं।
Git कहाँ से आया
Git का इतिहास बहुत कुछ समझाता है कि यह क्यों इस तरह काम करता है। इसे 2005 में Linus Torvalds द्वारा लिखा गया था, वही व्यक्ति जिसने Linux शुरू किया था। Linux kernel हजारों volunteers द्वारा दुनिया भर में बिखरे हुए द्वारा बनाया जाता है, और कुछ सालों के लिए उन्होंने एक commercial tool BitKeeper नामक का उपयोग करके सभी काम को समन्वित किया था, जिसे इसके पीछे की कंपनी open-source projects को मुक्त में उपयोग करने देती थी।
2005 में वह मुक्त व्यवस्था टूट गई, और kernel community के पास अचानक अपने विशाल, तेजी से चलने वाले codebase को प्रबंधित करने का कोई उपकरण नहीं था। उस समय कुछ भी उपलब्ध नहीं रखा जा सकता था। तो Torvalds ने kernel काम से कुछ हफ्तों के लिए पीछे हटते हुए अपना स्वयं का संस्करण-नियंत्रण उपकरण लिखा, बिल्कुल उसी समस्या द्वारा आकार दिए गए कुछ दृढ़ लक्ष्यों के साथ।
वह चाहते थे कि यह distributed हो, ताकि हर योगदानकर्ता के पास अपनी मशीन पर पूरी परियोजना का इतिहास हो और एक केंद्रीय सर्वर के साथ जांच किए बिना काम कर सके। वह चाहते थे कि यह fast हो, kernel के आकार की परियोजना को संभालने के लिए काफी तेज़ ताकि लोगों को इंतज़ार न करना पड़े। और वह चाहते थे कि यह integrity की गारंटी दे, ताकि कोई भी चुपचाप इतिहास को बदल न सकता और कोई disk error परियोजना को ख़राब न कर सकता बिना इसे देखे।
ये लक्ष्य हैं कि Git आज क्यों इस तरह व्यवहार करता है। जब आप एक परियोजना को clone करते हैं तो आप इसके पूरे इतिहास को काम करने के लिए पाते हैं, जो distributed लक्ष्य कार्य में है: आप कोई wifi के बिना एक विमान पर commit, branch, और browse history कर सकते हैं। और हर commit को एक fingerprint के साथ stamped किया जाता है जो इसकी सटीक सामग्री से परिकलित होता है, इसलिए अगर एक single byte कभी बदलता है तो fingerprint मेल खाना बंद करता है और Git देखता है। Design decisions जो Torvalds ने 2005 में जल्दबाजी में किए थे वे हैं जिन पर आप हर बार Git का उपयोग करते हैं।
clone आपको offline काम करने के लिए पूरा इतिहास देता है, और क्यों हर commit को एक fingerprint मिलता है। एक उपकरण के लिए उपयोगी संदर्भ जिसे आप वर्षों तक उपयोग करेंगे। यह handbook अगले कहाँ जाता है
Mental model के साथ, बाकी track काम के बारे में है। Your first repository शून्य से शुरू होता है: एक terminal खोलना, Git को install करना अगर आपकी मशीन के पास नहीं है, और एक फ़ोल्डर को एक repository में बदलना जिसे आप commit कर सकते हैं। वहाँ से आप परिवर्तन को सहेजने, फिर branches, merging, और GitHub पर collaboration flow की रोज़मर्रा की लय सीखेंगे। अगर कोई term कभी आपको खो देता है, तो Glossary में इन docs में Git vocabulary का हर टुकड़ा के लिए एक संक्षिप्त परिभाषा है।

