git - क्या गिट कांटे वास्तव में क्लोन गिट कर रहे हैं?




github git-clone (6)

मैं लोगों को यह कहते हुए सुनता हूं कि वे गिट में कोड फेंक रहे हैं। गिट "कांटा" संदिग्ध रूप से गिट "क्लोन" की तरह लगता है और कुछ (अर्थहीन) भविष्य में विलय से बचने के लिए मनोवैज्ञानिक इच्छा। गिट में कोई कांटा कमांड नहीं है, है ना?

मुझे लगता है कि आपके पास "फोर्किंग" का अर्थ है। यह एक अवधारणा है, विशेष रूप से किसी भी संस्करण नियंत्रण प्रणाली द्वारा समर्थित कमांड नहीं।

सबसे आसान प्रकार का फोर्किंग शाखाकरण के समानार्थी है। हर बार जब आप अपनी वीसीएस पर ध्यान दिए बिना शाखा बनाते हैं, तो आपने "फोर्क" किया है। ये कांटे आमतौर पर एक साथ विलय करने के लिए बहुत आसान हैं।

जिस तरह का कांटा आप बात कर रहे हैं, जहां एक अलग पार्टी कोड की पूरी प्रतिलिपि लेती है और दूर चली जाती है, वैसे ही वीसीएस के बाहर एक केंद्रीकृत प्रणाली जैसे सबवर्सन में होता है। गिट जैसे वितरित वीसीएस में पूरे कोडबेस को फोर्क करने और प्रभावी रूप से एक नई परियोजना शुरू करने के लिए बहुत बेहतर समर्थन है।

गिट (गिटहब नहीं) मूल रूप से दो तरीकों से एक संपूर्ण रेपो (यानी इसे क्लोनिंग) "फोर्किंग" का समर्थन करता है:

  • जब आप क्लोन करते हैं, तो आपके लिए एक रिमोट नामक origin बनाई जाती है
  • डिफ़ॉल्ट रूप से क्लोन में सभी शाखाएं उनके origin समकक्षों को ट्रैक करती origin
  • आपके द्वारा फोर्क किए गए मूल प्रोजेक्ट से परिवर्तन लाने और विलय करने में मामूली आसानी से आसान है

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

इस दिशा में गिटूब विस्तारित गिट पर कोई भी कोण? या कार्यक्षमता को अवशोषित गिट की कोई अफवाहें?

कोई एंजस्ट नहीं है क्योंकि आपकी धारणा गलत है। गिटहब एक अच्छा जीयूआई के साथ गिट की फोर्किंग कार्यक्षमता "खींचता है और पुल अनुरोध जारी करने का एक मानक तरीका है, लेकिन यह गिट में कार्यक्षमता को जोड़ता नहीं है। पूर्ण-रेपो-फोर्किंग की अवधारणा को मौलिक स्तर पर वितरित संस्करण नियंत्रण में बेक किया गया है। आप किसी भी समय गिटहब को छोड़ सकते हैं और फिर भी "फोर्कड" परियोजनाओं को पुश / पुल करना जारी रखते हैं।

मैं लोगों को यह कहते हुए सुनता हूं कि वे गिट में कोड फेंक रहे हैं। गिट "कांटा" संदिग्ध रूप से गिट "क्लोन" की तरह लगता है और कुछ (अर्थहीन) भविष्य में विलय से बचने के लिए मनोवैज्ञानिक इच्छा। गिट में कोई कांटा कमांड नहीं है, है ना?

गितूब इस पर पत्राचार को दबाकर थोड़ा और वास्तविक बनाता है। यही है, आप फोर्क बटन दबाते हैं और बाद में, जब आप पुल अनुरोध बटन दबाते हैं, तो सिस्टम मालिक को ईमेल करने के लिए पर्याप्त स्मार्ट है। इसलिए, यह रेपो स्वामित्व और अनुमतियों के आसपास एक नृत्य का थोड़ा सा है।

हाॅं नही? इस दिशा में गिटूब विस्तारित गिट पर कोई भी कोण? या कार्यक्षमता को अवशोषित गिट की कोई अफवाहें?


"कांटा" क्या है इसके संबंध में यहां एक गलतफहमी है। एक कांटा वास्तव में प्रति उपयोगकर्ता शाखाओं के एक सेट से अधिक कुछ नहीं है। जब आप एक कांटे पर धक्का देते हैं तो आप वास्तव में मूल रेपो को धक्का देते हैं क्योंकि यह केवल रेपो है।

आप एक कांटा को दबाकर, प्रतिबद्धता को ध्यान में रखते हुए और मूल रेपो पर जाकर और प्रतिबद्ध आईडी का उपयोग करके इसे आज़मा सकते हैं, आप देखेंगे कि प्रतिबद्धता मूल रेपो में "अंदर" है।

यह बहुत समझ में आता है लेकिन स्पष्ट से बहुत दूर है (मैंने हाल ही में यह गलती से खोजा है)।

जब जॉन फोर्क्स रेपो सुपरप्रोजेक्ट वास्तव में ऐसा लगता है कि स्रोत रेपो में सभी शाखाओं को "जॉन.मास्टर" और "जॉन.न्यू_गुई_प्रोजेक्ट" जैसे नाम से दोहराया गया है।

जिथूब "जॉन" छुपाता है। हमारे द्वारा और हमें भ्रम देता है कि हमारे पास गिथूब में रेपो की अपनी "प्रतिलिपि" है, लेकिन हम नहीं करते हैं और न ही किसी की भी आवश्यकता है।

तो मेरी कांटा की शाखा "मास्टर" वास्तव में "Korporal.master" नामित है लेकिन गिथब यूआई कभी यह नहीं बताती है, मुझे केवल "मास्टर" दिखाती है।

यह वही है जो मुझे लगता है कि मैं हाल ही में जो सामान कर रहा हूं उसके आधार पर हुड के नीचे चल रहा है और जब आप इसे सोचते हैं, तो यह बहुत अच्छा डिजाइन है।

इस कारण से मुझे लगता है कि माइक्रोसॉफ्ट के लिए उनके विजुअल स्टूडियो टीम सेवाओं की पेशकश में गिट फोर्क्स को लागू करना बहुत आसान होगा।


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


क्लोनिंग में स्थानीय मशीन पर गिट रिपॉजिटरी की प्रतिलिपि बनाना शामिल है, जबकि फोर्किंग भंडार को दूसरे भंडार में क्लोन कर रहा है। क्लोनिंग केवल व्यक्तिगत उपयोग के लिए है (हालांकि भविष्य में विलय हो सकता है), लेकिन फोर्किंग के साथ आप एक नया संभावित परियोजना पथ कॉपी और खोल रहे हैं


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

गिट क्लोन एक वास्तविक कमांड है जो उपयोगकर्ताओं को स्रोत की एक प्रति प्राप्त करने की अनुमति देता है। गिट क्लोन [यूआरएल] यह आपके स्थानीय भंडार में [यूआरएल] की एक प्रति बनाना चाहिए।


मुझे लगता है कि कांटा अन्य भंडार की एक प्रति है लेकिन आपके खाते में संशोधन के साथ। उदाहरण के लिए, यदि आप सीधे स्थानीय रूप से अन्य भंडार क्लोन करते हैं, तो रिमोट ऑब्जेक्ट उत्पत्ति अभी भी उस खाते का उपयोग कर रही है जिसे आपने क्लोन किया है। आप अपना कोड प्रतिबद्ध और योगदान नहीं दे सकते। यह सिर्फ कोड की एक शुद्ध प्रति है। अन्यथा, यदि आप एक संग्रह को फोर्क करते हैं, तो यह आपके गिटब खाते में आपके खाते की सेटिंग के अपडेट के साथ रेपो क्लोन करेगा। और उसके बाद अपने खाते के संदर्भ में रेपो क्लोनिंग, आप अपने कोड कर सकते हैं।





git-fork