मैं एक परियोजना के कांटा करने और इसके बारे में करने के बीच के अंतरों को जानना चाहता हूं clone
।
अगर मैंने एक प्रोजेक्ट कांटा किया है तो क्या मैं केवल GitHub के माध्यम से पुल अनुरोध भेज सकता हूं?
मैं एक परियोजना के कांटा करने और इसके बारे में करने के बीच के अंतरों को जानना चाहता हूं clone
।
अगर मैंने एक प्रोजेक्ट कांटा किया है तो क्या मैं केवल GitHub के माध्यम से पुल अनुरोध भेज सकता हूं?
जवाबों:
असल में, हाँ। ए fork
सिर्फ गिटहब के लिए एक अनुरोध है कि परियोजना को क्लोन करें और इसे अपने उपयोगकर्ता नाम के तहत पंजीकृत करें ; GitHub भी दो रिपॉजिटरी के बीच संबंधों का ट्रैक रखता है, इसलिए आप दो प्रोजेक्ट्स (और अन्य कांटे) के बीच कमिट और पुल की कल्पना कर सकते हैं।
आप अभी भी अनुरोध कर सकते हैं कि लोग आपके क्लोन किए गए भंडार से खींच लें, भले ही आप उपयोग न करें fork
- लेकिन आपको इसे स्वयं सार्वजनिक रूप से उपलब्ध कराने से निपटना होगा। या डेवलपर्स पैच (देखें git format-patch
) भेजें कि वे अपने पेड़ों पर लागू कर सकते हैं।
git pull
। एक कांटा कई कमांड लेता है। और आश्चर्य की बात नहीं है, लगभग हर कांटा जो मैं देख रहा हूं वह पुराना है। कांटे स्टेरॉयड पर मावेन रिपोजिटरी समस्या की तरह हैं। रेपो (मावेन) में से एक के बजाय, उनमें से हजारों (गिट) हैं।
git pull
ed हो सकती है , इसलिए अभी भी किसी प्रकार का संबंध मौजूद है। यदि आपने पूरी प्रति को अपने स्वयं के स्थानीय मशीन पर बैठा दिया और मूल रेपो से डिस्कनेक्ट कर दिया।
जब आप कहते हैं कि आप एक रिपॉजिटरी फोर्किंग कर रहे हैं तो आप मूल रूप से अपनी GitHub ID के तहत रिपॉजिटरी की एक प्रति बना रहे हैं। यहां ध्यान देने वाली मुख्य बात यह है कि मूल भंडार में किए गए किसी भी परिवर्तन को आपके कांटे हुए रिपॉजिटरी (आपको लाने और वापस करने की आवश्यकता) पर वापस परिलक्षित किया जाएगा । हालाँकि, यदि आप अपने forked रिपॉजिटरी में कोई बदलाव करते हैं तो आपको मूल रिपॉजिटरी में स्पष्ट रूप से एक पुल अनुरोध करना होगा । यदि आपका पुल अनुरोध मूल रिपॉजिटरी के व्यवस्थापक द्वारा अनुमोदित है , तो आपके परिवर्तन मौजूदा मूल कोड-बेस के साथ प्रतिबद्ध / मर्ज किए जाएंगे । तब तक, आपके परिवर्तन केवल उस प्रति में परिलक्षित होंगे जिसे आपने कांटा था ।
संक्षेप में:
फोर्क एंड पुल मॉडल किसी को भी मौजूदा रिपॉजिटरी को फोर्क करने देता है और स्रोत रिपॉजिटरी तक पहुंच की आवश्यकता के बिना अपने व्यक्तिगत कांटे में परिवर्तन को धक्का देता है। तब परिवर्तन को प्रोजेक्ट अनुचर द्वारा स्रोत भंडार में खींचा जाना चाहिए।
ध्यान दें कि फोर्क करने के बाद आप स्थानीय रूप से अपनी मशीन पर अपने भंडार (अपने नाम के नीचे) क्लोन कर सकते हैं। इसमें बदलाव करें और इसे अपने फोर्क्ड रिपॉजिटरी में धकेल दें। हालाँकि, मूल रिपॉजिटरी में आपके परिवर्तनों को प्रतिबिंबित करने के लिए आपके पुल अनुरोध को अनुमोदित किया जाना चाहिए।
अन्य रोचक किस्सों की जोड़ी -
आप अपने ऑनलाइन रेपो पर (या अपने स्थानीय रेपो पर कमिट कर सकते हैं और फिर अपने ऑनलाइन रेपो पर पुश कर सकते हैं), फिर पुल अनुरोध भेजें।
प्रोजेक्ट मैनेजर इसे अपने मुख्य ऑनलाइन संस्करण में आपके परिवर्तन प्राप्त करने के लिए स्वीकार कर सकता है।
एक क्लोन वह है जहाँ आपके पास एक दोहराव के दो (संभवतः अलग) संस्करणों के बीच उचित दोहराव है, और जुदाई है। जब एक रेपो में संशोधन किया जाता है, तो नई सामग्री को एक पुश कमांड का उपयोग करके सक्रिय रूप से दूसरे रेपो में कॉपी किया जाना चाहिए। और दूसरे रेपो में बदलाव आया।
जब आप किसी सर्वर पर रेपो फोर्क करते हैं, तो सामग्री के दोहराव की कोई आवश्यकता नहीं होती है क्योंकि दोनों रेपो उसी सर्वर से समान [निश्चित वस्तु] सामग्री का उपयोग करेंगे। 'चाल' अलग-अलग उपयोगकर्ता के दृष्टिकोण को प्रबंधित करने में है ताकि प्रत्येक उपयोगकर्ता का मानना है कि उनके पास रेपो की एक पूरी व्यक्तिगत प्रति है। कांटे के बीच पुश और भ्रूण बस उपयोगकर्ता के संकेत को अपडेट करता है।
निचले स्तर पर, गिट आंतरिक रूप से एक ही काम करता है। यदि आपके पास तीन अलग-अलग फाइलें हैं, जिनमें से प्रत्येक में है Hello World
, तो हैलो वर्ल्ड ब्लॉब की अपनी एकल प्रति 'कांटे' की 'कॉपी' करें और आवश्यकतानुसार तीनों स्थानों में से प्रत्येक में इसे प्रस्तुत करें।
सर्वर पर कांटे की क्षमता का मतलब है कि गितुब का बड़ा भंडारण भत्ता औसत रूप से उतना बड़ा नहीं है जितना कि हर शरीर एक एकल रेपो को साझा करता है।
संक्षेप में, फोर्किंग संभवतः "आपके गिटहब आईडी / प्रोफाइल के तहत क्लोनिंग" के समान है। कुछ अपवादों के साथ एक कांटा कभी भी क्लोन से बेहतर होता है, जाहिर है। कांटे हुए रिपॉजिटरी को हमेशा क्लोन किए गए रिपॉजिटरी के विपरीत मूल रिपॉजिटरी के साथ निगरानी / तुलना की जा रही है। यह आपको परिवर्तनों को ट्रैक करने में सक्षम बनाता है, पुल अनुरोधों को आरंभ करता है और अपने forked के साथ मूल भंडार में किए गए परिवर्तनों को मैन्युअल रूप से सिंक करता है।
जबकि @ अनिकेतखाकुर का जवाब बहुत अच्छा है। निम्नलिखित प्रश्न का उत्तर अभी तक किसी ने नहीं दिया है।
अगर मैंने एक प्रोजेक्ट कांटा किया है तो क्या मैं केवल GitHub के माध्यम से पुल अनुरोध भेज सकता हूं?
यदि आप एक रिपॉजिटरी में योगदानकर्ता हैं, तो आप कर सकते हैं: एक स्थानीय क्लोन बनाएं। एक स्थानीय शाखा बनाओ। उस शाखा में कमिट्स जोड़ें। स्थानीय शाखा को वापस गीथब (प्रक्रिया में एक दूरस्थ शाखा बनाने) पर धकेलें। उस शाखा को मास्टर शाखा (या जो भी शाखा आपको पसंद हो) में विलय करने का अनुरोध करने के लिए एक अनुरोध करें।
मामले में आपने वह किया जो प्रश्नकर्ता ने संकेत किया था (कांटा भूल गए और सिर्फ स्थानीय रूप से एक रेपो का क्लोन बनाया, परिवर्तन किए और अब एक पुल अनुरोध जारी करने की आवश्यकता है) आप ट्रैक पर वापस आ सकते हैं:
GitHub पर एक और अजीब सूक्ष्म अंतर यह है कि जब तक आपके परिवर्तनों को मूल रेपो में खींच नहीं लिया जाता तब तक कांटों में परिवर्तन आपकी गतिविधि लॉग में नहीं गिना जाता है। क्या अधिक है, एक कांटा को एक उचित क्लोन में बदलने के लिए, आपको जाहिरा तौर पर जीथब समर्थन से संपर्क करना होगा।
से क्यों मेरी योगदान दिखाई नहीं दे रहे :
एक कांटे में कमिट किया गया था
एक कांटा में किए गए कमिट आपके योगदान की ओर नहीं गिने जाएंगे। उन्हें गिनने के लिए, आपको निम्नलिखित में से एक करना होगा:
अपने परिवर्तनों को मूल रिपॉजिटरी में विलय करने के लिए एक पुल अनुरोध खोलें । कांटा अलग करने के लिए और इसे GitHub पर एक स्टैंडअलोन रिपॉजिटरी में बदल दें, GitHub समर्थन से संपर्क करें । यदि कांटे के पास अपने स्वयं के कांटे हैं, तो समर्थन को बताएं कि क्या कांटे आपके भंडार के साथ एक नए नेटवर्क में चले जाएं या वर्तमान नेटवर्क में बने रहें। अधिक जानकारी के लिए, " कांटे के बारे में " देखें ।