Github एक मौजूदा क्लोन से एक कांटा के रूप में एक भंडार जोड़ रहा है


21

इसलिए मेरे पास एक गिट रिपॉजिटरी है जिसे मैंने गितुब पर अपस्ट्रीम स्रोत से क्लोन किया था। मैंने इसमें कुछ बदलाव किए (जो कि निष्‍पादित और निष्‍पक्ष शाखा में हैं)। मैं जो करना चाहता हूं वह अपने परिवर्तन को एक नई शाखा के रूप में अपने github पृष्ठ पर धकेल रहा है और अभी भी इसे एक कांटे के रूप में देख रहा हूं।

क्या यह संभव है? मैं गिट और जीथब के लिए काफी नया हूं। क्या मेरे सवाल का भी कोई मतलब था?

सबसे आसान तरीका जो मैं सोच सकता हूं (जो मुझे यकीन है कि सबसे आस-पास का रास्ता है), गितुब पर रेपो को कांटा करना है। इसे स्थानीय रूप से एक अलग निर्देशिका में क्लोन करें। अपस्ट्रीम मूल रेपो जोड़ें। उस नए फोर्क्ड रेपो में एक शाखा बनाएँ। नए स्थानीय रेपो में हाथ से मेरे कोड परिवर्तन की प्रतिलिपि बनाएँ। और फिर इसे मेरे गितुब तक वापस धकेलो।

क्या यह एक सामान्य उपयोग का मामला है जो निर्देशिकाओं को डुप्लिकेट किए बिना करने का एक सरल तरीका है?

मुझे लगता है कि मैं एसओ के विपरीत यहां पूछ रहा हूं क्योंकि मैं कमांड लाइन गिट का उपयोग करके लिनक्स पर हूं और यहां के लोग बेहतर जवाब देते हैं imo =]


मुझे लगता है कि इस विषय पर तकनीकी रूप से है, लेकिन यह बेहतर कहीं और के बाद से यह ज्यादातर एक GitHub सवाल हो रहा है कर सकते हैं,
माइकल Mrozek

जवाबों:


22

आप यह सब अपने मौजूदा रिपॉजिटरी से कर सकते हैं (कांटे को एक नए (स्थानीय) रिपॉजिटरी में क्लोन करने की जरूरत नहीं है, अपनी शाखा बनाएं, अपने कमिट / बदलावों को कॉपी करें)।

  1. प्रकाशित होने के लिए तैयार रहें।

    किसी भी मौजूदा स्थानीय आवागमन को परिष्कृत करें (जैसे git commit --amend/ और / या git rebase --interactive)।

    आपके किसी भी ऐसे अनचाहे परिवर्तन के लिए जिसे आप प्रकाशित करना चाहते हैं (मुझे यकीन नहीं है कि अगर आप का मतलब यह है कि आपके स्थानीय मास्टर पर कुछ कमेंट्स हैं और कुछ अनक्मिटेड बदलाव हैं, या सिर्फ कुछ अनकम्फर्टेबल बदलाव हैं; संयोगवश, अनकम्फर्ड बदलाव “पर नहीं” हैं शाखा ”, वे आपके काम करने के पेड़ में सख्ती से हैं)।

    अपनी "नई शाखा" के लिए इच्छित नाम देने के लिए अपनी मास्टर शाखा का नाम बदलें । यह कड़ाई से आवश्यक नहीं है (आप किसी भी शाखा से किसी अन्य शाखा में धक्का दे सकते हैं), लेकिन यह संभवतः लंबे समय में भ्रम को कम करेगा यदि आपकी स्थानीय शाखा और आपके गिटहब कांटे में शाखा का एक ही नाम हो।

    git branch -m master my-feature
    
  2. अपस्ट्रीम GitHub रिपॉजिटरी
    (जैसे) के github.com:UpstreamOwner/repostory_name.gitरूप में
    (जैसे) फोर्क github.com:YourUser/repository_name.git

    यह GitHub वेबसाइट (या "क्लाइंट" जो GitHub API का उपयोग करता है) पर किया जाता है, इसमें कोई स्थानीय Git कमांड शामिल नहीं हैं।

  3. आपकी स्थानीय रिपॉजिटरी में (जो मूल रूप से अपस्ट्रीम GitHub रिपॉजिटरी से क्लोन किया गया था और इसके मास्टर में आपके परिवर्तन हैं ), अपने फोर्क रिपॉजिटरी को रिमोट के रूप में जोड़ें:

    git remote add -f github github.com:YourUser/repository_name.git
    
  4. GitHub पर अपने कांटे के भंडार के लिए अपनी शाखा पुश करें।

    git push github my-feature
    
  5. वैकल्पिक रूप से, नाम बदलें ताकि आपका कांटा "मूल" और अपस्ट्रीम "अपस्ट्रीम" के रूप में जाना जाए।

    git remote rename origin upstream
    git remote rename github origin
    

    रीमोट का नाम बदलने का एक कारण यह होगा कि आप git pushएक रिपॉजिटरी को निर्दिष्ट किए बिना उपयोग करने में सक्षम होना चाहते हैं (यह "मूल" के लिए चूक)।


त्रुटिपूर्ण रूप से काम किया है, लेकिन जब आप जीथब रिमोट बनाते हैं तो मुझे लगता है कि आप
जीथब

1
@jesjimher: इस पोस्ट में "URL" "scp- जैसे सिंटैक्स" का उपयोग करते हैं जो SSH का उपयोग करते हैं, HTTP (एस) का नहीं। आपको HTTP (S) URL के रूप में उपयोग करने के लिए बृहदान्त्र को एक स्लैश में बदलने की भी आवश्यकता होगी (यह मानते हुए कि सर्वर अतिरिक्त नाम स्थान परिवर्तन के बिना दोनों का समर्थन करता है, जो GitHub करता है)।
क्रिस जॉन्सन

ओह, आप सही कह रहे हैं, क्रिस, मैंने एक स्लैश के रूप में बृहदान्त्र को गलत किया था, और इस तरह यह मेरे लिए तब तक काम नहीं करता था जब तक कि मैंने "https" नहीं जोड़ा। शोर के लिए क्षमा करें ...
jesjimher

चरण 4 में, -uविकल्प का उपयोग करके अपनी स्थानीय शाखा को उसी दूरस्थ शाखा पर my-feature नज़र रख सकते हैं origin/my-feature। कमांड है:git push -u github my-feature
YaOzI

एक दम बढ़िया। केवल एक चीज जो मुझे बदलनी थी, वह थी गीथूब पता!
Tico

0

एक उपकरण है: hub

hubएक कमांड लाइन टूल है जो gitइसे अतिरिक्त सुविधाओं और कमांड के साथ विस्तारित करने के लिए लपेटता है जो गिटहब के साथ काम करना आसान बनाते हैं

अब आप कर सकते हैं:

# cd to a cloned repo with uncommited changes
git checkout -b feature
git commit -am 'done with feature'
git fork
git push YOUR_USER feature
# git pull-request
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.