2010-11-17 8 views
80

को GitHub से कन्वर्ट करने के लिए मैं इस समस्या आ।कैसे एक केवल पढ़ने के लिए Git क्लोन समय-समय पर एक काँटेदार एक

मान लें कि मैंने रेल के स्रोत कोड को पढ़ने के लिए निम्नलिखित किया है क्योंकि मैं कुछ मुद्दों पर चल रहा हूं।

git clone git://github.com/rails/rails.git 

शोध के दौरान मैंने कुछ परीक्षण किया और अब मुझे एक फिक्स है कि मैं रेल कोर टीम को देखना चाहूंगा। मैं अपने परिवर्तनों को रेल के एक फोर्क संस्करण में कैसे धक्का दूं।

याद रखें जब मैंने क्लोन किया, मैंने एक फोर्क संस्करण को क्लोन नहीं किया लेकिन केवल पढ़ने के संस्करण को क्लोन किया।

ऐसा नहीं है कि मैं forking का विरोध कर रहा हूँ नहीं है। यह सिर्फ इतना है कि कभी-कभी मुझे लगता है कि मैं बस ब्राउज़ करने जा रहा हूं, तो मैं कुछ जोड़ना चाहता हूं।

+0

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

उत्तर

1

इससे कोई फर्क नहीं करना चाहिए। यदि आप चाहें तो आप अपने गैर-फोर्क वाले रेपो को निर्दिष्ट करते हुए एक और रिमोट जोड़ सकते हैं। उसमें अपने परिवर्तन पुश करें।

+0

मैं एक और रिमोट कैसे जोड़ूं। माफ़ कीजिये। दुनिया को गिट करने के लिए नौसिखिया। –

+1

आप बाद में कांटा कर सकते हैं और फिर अपने फोर्कड रेपो को धक्का दे सकते हैं ... यदि आपने अभी तक फोर्क नहीं किया है। फोर्किंग आपको अपनी रुचि की रिपोजिटरी की "प्रतिलिपि" बनाता है। –

+0

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

110

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

पहला कदम क्लिक करने के लिए नदी के ऊपर GitHub परियोजना पृष्ठ पर "कांटा" बटन (GitHub instructions on forking से चित्र) है:

GitHub fork button

एक बार जब आप यह कर लें, खोजने के लिए और उस के लिए यूआरएल को कॉपी रेपो। सुनिश्चित करें कि आप एसएसएच यूआरएल का उपयोग करते हैं, जिसने पहुंच को पढ़ और लिख लिया है। यह [email protected]:nadal/rails.git जैसा कुछ होना चाहिए, मान लें कि आपका उपयोगकर्ता नाम nadal है।

अब आप रिमोट बना सकते हैं, जिससे गिट को रिमोट रिपोजिटरी का ट्रैक रखने, इसे खींचने या आपके पास पहुंच के आधार पर इसे धक्का देने की अनुमति मिलती है। आप चुन सकते हैं एक है कि आप करने के लिए धक्का होगा के साथ origin की जगह (जो कई लोगों को यह सेट अप है कैसे), या ऊपर करके एक नई दूरस्थ बनाने के लिए origin इशारा छोड़ दें। मैं दिखाऊंगा कि पहला सेटअप कैसे करें; दूसरा पता लगाने के लिए आसान होना चाहिए।

upstream लिए GitHub पर अपने कांटा को इंगित करने के origin को बदलने के लिए, तो आप शायद नदी के ऊपर शाखा कहीं आस-पास रखना चाहते हैं जाएगा, ताकि नाम बदलने यह:

git remote rename origin upstream 

अब आप अपने कांटा के लिए एक नया रिमोट की ओर इशारा करते बनाने के लिए:

git remote add -f origin [email protected]:nadal/rails.git 

और अब आप अपने नए कांटा करने के लिए पुश करने के लिए सक्षम होना चाहिए:

git push origin master 

एक बार जब आप परिवर्तन आप GitHub अप करने के लिए आगे बढ़ाया है जो से खुश हैं, और रेल टीम इस पर गौर करने के लिए से किसी को चाहते हैं, आपके पास दो विकल्प। गिटहब का उपयोग करते हुए send a pull request है; वहां ऐसा करने के लिए दस्तावेज़ देखें। यदि आपके पास केवल एक या कुछ छोटे पैच हैं, तो रेल टीम आपको create a Lighthouse ticket पसंद करेगी और आपको पैच संलग्न करेगी; अधिक जानकारी के लिए contributing to Rails पर निर्देश देखें।

संपादित करें यह इंगित करने के लिए एक आरेख है कि क्या हो रहा है। आपने जो किया है वह बस अपस्ट्रीम रेल रेपो को क्लोन कर रहा है;

 
Github: git://github.com/rails/rails.git 
        ^
        | 
Remotes:   origin 
        | 
Your machine:  rails/ 

यहाँ अगर आप काँटेदार आप क्या मिलता है और फिर अपने कांटा क्लोन: तो अब आप अपने खुद के मशीन है, जो origin रूप git://github.com/rails/rails.git को संदर्भित करता है पर अपने खुद के रेपो है

 
Github: git://github.com/rails/rails.git <-- [email protected]:nadal/rails.git 
                 ^
                  | 
Remotes:            origin 
                  | 
Your machine:           rails/ 

आप का पालन करें मेरी निर्देश, यहाँ आप क्या मिलेगा है:

 
Github: git://github.com/rails/rails.git <-- [email protected]:nadal/rails.git 
         ^        ^
         |         | 
Remotes:   upstream       origin 
         |         | 
Your machine:   \-------------------------------rails/ 

जो केवल संस्करण है कि आप forking द्वारा प्राप्त की तरह है, सिवाय इसके कि यह भी एकहैरिमोट ताकि आप आधिकारिक परिवर्तनों को ट्रैक कर सकें और उन्हें अपने कोड में विलय कर सकें (यदि आपने फोर्क संस्करण बनाया है, तो आप शायद upstream रिमोट भी जोड़ना चाहते हैं)।

+0

यदि आप मूल पोस्टर कहते हैं, तो आप वास्तव में फोर्क नहीं करना चाहते हैं, कभी-कभी वह मूल रूप से किसी भी लिंक के बिना कुछ काम सहेजना चाह सकता है। –

+1

@adymitruk नहीं, ओपी ने उल्लेख किया कि वह कभी-कभी अपस्ट्रीम रेपो को फोर्किंग के बिना क्लोन करता है, लेकिन फिर बाद में योगदान देना चाहता है। उन्होंने विशेष रूप से उल्लेख किया कि वह अपने परिवर्तनों को रेल के एक फोर्क संस्करण में धक्का देना चाहते हैं। उन्होंने मूल के किसी भी लिंक के बिना काम को बचाने के बारे में कुछ भी नहीं कहा। –

+0

वह वास्तविक प्रोजेक्ट में योगदानकर्ता बनना चाह सकता है, यदि वह फोर्क नहीं करना चाहता ... जैसा कि असंभव है। –

0

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

+1

मुझे समझ में नहीं आता कि क्यों कोई भी फोर्किंग नहीं करना चाहता, क्योंकि यह सिर्फ एक साधारण कांटा है! यह प्रोजेक्ट का एक बिल्कुल नया संस्करण नहीं है - बस उस स्रोत कोड की आपकी प्रति जो आपको उम्मीद है कि विलय हो गया है। बस पैच श्रृंखला की तरह। – alternative

+1

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

3

क्लोन से फोर्क मोड से स्विच करने का एक बहुत ही आसान तरीका hub रैपर http://hub.github.com/ से उपयोग कर रहा है।

जब यह स्थापित किया गया है, बस अपने केवल-पढ़ने के क्लोन के भीतर से

hub fork 

चलाते हैं।

+0

अच्छी तरह से काम करता है। कांटा आपके जीथ्यूब उपयोगकर्ता नाम के समान रिमोट नाम के साथ बनाया जाएगा। – Zitrax

संबंधित मुद्दे