अगर मैं एक परियोजना कांटा है कि github पर होस्ट किया गया है। क्या मैंने सभी शाखाओं को कांटा है? मुझे कैसे पता चलेगा कि मेरा कांटा किस शाखा पर आधारित है? दूसरे शब्दों में मेरे पीसी पर कौन सी शाखा डाउनलोड की जाएगी?
अगर मैं एक परियोजना कांटा है कि github पर होस्ट किया गया है। क्या मैंने सभी शाखाओं को कांटा है? मुझे कैसे पता चलेगा कि मेरा कांटा किस शाखा पर आधारित है? दूसरे शब्दों में मेरे पीसी पर कौन सी शाखा डाउनलोड की जाएगी?
जवाबों:
GitHub पर सभी शाखाओं को एक कांटा में कॉपी किया जाएगा। (जाहिर है, इसमें वे शाखाएँ शामिल नहीं हैं जिन्हें पहली बार में GitHub में धकेल दिया गया था।)
लेकिन एक कांटा एक GitHub-to-GitHub ऑपरेशन है; आपके पीसी में कुछ भी कॉपी नहीं किया गया है। यह एक Git क्लोन के समान नहीं है । यदि आप यह पूछना चाहते हैं कि "जब मैंने किसी प्रोजेक्ट की क्लोनिंग की तो क्या कॉपी की है?", के लिए मैनुअल देखें git-clone(1)
।
इस पर इस तरीके से विचार करें:
रेपो [सिटोरी] एक या कई शाखाओं में टीम के सहयोग से काम करता है। सभी योगदानकर्ताओं की अपनी प्रति है।
प्रत्येक कांटामुख्य रेपो का एक योगदानकर्ता के काम से मेल खाता है। एक कांटा वास्तव में एक Github है (Git नहीं) अपने उपयोगकर्ता खाते में रेपो के क्लोन को संग्रहीत करने के लिए निर्माण करता है। एक क्लोन के रूप में, यह उस समय मुख्य रेपो में सभी शाखाओं को समाहित करेगा, जब आपने कांटा बनाया था।
कांटा और / या मुख्य रेपो के भीतर प्रत्येक शाखा कई प्रकार की चीजों के अनुरूप हो सकती है, यह इस बात पर निर्भर करती है कि आप कैसे काम करना चाहते हैं। प्रत्येक शाखा परियोजना के एक संस्करण का उल्लेख कर सकती है, लेकिन विकास के विभिन्न चैनलों जैसे कि हॉटफ़िक्स या प्रयोगात्मक कार्य के अनुरूप हो सकती है।
पुल अनुरोध (GitHub पारिस्थितिकी तंत्र में) काम से मेल खाती है। हर बार जब मैं मुख्य रेपो के लिए अलग-थलग कार्य पूरा करना चाहता हूं, तो मैं उस कार्य में किए गए कमिट के अनुरूप पुल अनुरोध बनाता हूं । ये कॉमेट्स मेरे कांटे या मेरी शाखा से मुख्य रेपो तक खींचे जाते हैं ।
एक प्रतिबद्ध कोड में परिवर्तन का एक सेट है। यह गिट के बारे में सबसे दिलचस्प चीजों में से एक है। आप फ़ाइलों को स्थानांतरित नहीं करते हैं, आप परिवर्तनों के लॉग को स्थानांतरित करते हैं।
कांटा GitHub पक्ष पर एक क्लोन है (यह सब कुछ क्लोन करता है)।
जब आप एक रेपो का क्लोन बना रहे होते हैं, तो आप अपनी सभी शाखाओं के साथ, रेपो के पूरे इतिहास को प्राप्त कर रहे होते हैं।
भले ही आप सिद्धांत में दूरस्थ रेपो की डिफ़ॉल्ट शाखा को बदल सकते हैं, लेकिन GitHub रेपो से एक क्लोन मुख्य रूप से मास्टर शाखा की तलाश में है। "डिफ़ॉल्ट" शाखा को बदलने के लिए अर्थ एक GitHub क्लोन मिलेगा, आपको मास्टर शाखा का नाम बदलने की आवश्यकता है।
यदि आप किसी प्रोजेक्ट को कांटा करते हैं, तो आप पूरे प्रोजेक्ट की प्रतिलिपि अपने git हब खाते में बना रहे हैं। आप अपने पीसी के लिए कुछ भी मुकाबला नहीं कर रहे हैं
अपने पीसी में एक प्रतिलिपि बनाने के लिए आपको इसे क्लोन करना होगा और सभी सामान खींचना होगा और आपको उस परियोजना की सभी शाखाएँ और कोड मिल जाएंगे
यदि आप Github वेबसाइट से किसी प्रोजेक्ट का कांटा बनाते हैं, तो आपको अपस्ट्रीम प्रोजेक्ट से सभी शाखाएँ मिलती हैं।
यदि आप अपने स्थानीय पीसी पर अपने नए खनन कांटे से क्लोन करते हैं, तो आपके पास origin
आपके पीसी पर रिमोट होगा जो आपके कांटे की मास्टर शाखा को इंगित करता है।
upstream
शाखा बनाना कुछ ऐसा है जो आपको करना है; और वे आपको बताते हैं कि कैसे करना है।
यह बहुत अच्छी तरह से समझाया जा सकता है। GitHub में आपके पास एक केंद्रीय भंडार है। जब भी आप कुछ बदलाव करने के लिए अपने व्यक्तिगत कंप्यूटर पर इसका क्लोन लेते हैं, तो मुख्य भंडार के इस स्थानीय क्लोन को एक कांटा कहा जाता है।
शाखा कुछ अलग है और कांटा / रेपो में शामिल है। दरअसल शाखा विकास के विभिन्न चरणों में आपका काम है। उन्हें विभिन्न प्रकार के उपयोगकर्ताओं को पहुंच प्रदान करने, साइट को क्लाइंट के लिए प्रदर्शित करने के लिए, कार्यात्मकताओं के एक सेट को सहेजने के लिए आवश्यक के रूप में और बनाया जाता है।
मैं एक वास्तविक जीवन उदाहरण साझा करना चाहता हूं जब हम शाखाओं का उपयोग करते हैं और जब हम कांटे का उपयोग करते हैं
हमारे पास हमारी दुकान पर गिटलैब है और कभी-कभी हमें लारवेल परियोजना से पैकेज पर काम करना पड़ता है। हम आम तौर पर एक शाखा बनाते हैं और उस शाखा में परिवर्तन करते हैं जिसे हम वास्तविक लारवेल परियोजना के साथ काम करते समय अपने स्थानीय वीएम देव वातावरण में परीक्षण कर रहे हैं।
मान लीजिए कि हमारी परियोजना स्थित है
https://github.com/yardpenalty/mainproject.git
शाखा का उपयोग:
कहते हैं कि शाखा को कहा जाता है It_doesnt_matter
एक बार जब हमारे पास हमारी शाखा है जिस तरह से हम उत्पादन चाहते हैं तो हम इस शाखा को अपना अंतिम धक्का देते हैं और एक मर्ज का अनुरोध करते हैं जो तब परीक्षण के लिए यूएटी में जाता है। परीक्षण क्यूसी के माध्यम से चला गया है परिवर्तन उत्पादन में विलय कर रहे हैं।
मर्ज से It_doesnt_matter
शाखा अब मास्टर परियोजना को धक्का दे
पर https://github.com/yardpenalty/mainproject.git
मान लीजिए कि पैकेज प्रोजेक्ट स्थित है
https://github.com/yardpenalty/mypackage.git
ध्यान रखें कि मेनप्रोजेक्ट उत्पादन में इस पैकेज का उपयोग करता है इसलिए हम केवल उन्हें इस पैकेज में (अन्य कारणों के साथ) धकेल कर बदलाव नहीं कर सकते हैं। मान लीजिए कि उत्पादन पर बदलाव करने के लिए एक वेब देव को इस पैकेज को संपादित करना है।
एक साधारण शाखा अभ्यस्त काम करती है क्योंकि हम पैकेज आदि को प्रकाशित किए बिना अपने बदलाव नहीं देख सकते हैं।
कांटा उपयोग: अब जब हमें अपने पैकेज के साथ थोड़ी सी चालबाजी करनी होती है, तो हम एक कांटा के माध्यम से उत्पादन पैकेज का एक क्लोन बनाते हैं। कंपोज़र.जॉन फाइलों को फोर्क को इंगित करने के लिए अपडेट किया जा सकता है जो अब उपयोगकर्ता या समूह पथ पर स्थित है
इसलिए हम एक कांटा बनाएंगे https://github.com/yardpenalty/mypackage.git
और इसे कॉल करें https://github.com/yardpenalty/yards/mypackage.git
अब हम अपनी "रिपॉजिटरी" में इस पैकेज की ओर इशारा करने के लिए अपनी कंपोजर.जॉसन फाइल को अपडेट कर सकते हैं : [इस तरह के एरे को इस तरह से देखें और चले जाएं!
{
"type": "github",
"url": "https://github.com/yardpenalty/yard/mypackage.git"
}
]