GitHub से GitLab तक Git रिपॉजिटरी को फोर्क करना


99

मान लीजिए कि मैं किसी और की परियोजना को ठीक करना चाहता हूं। यह परियोजना GitHub पर रहती है।

मैं GitHub पर एक कांटा बना सकता हूं और फिक्स को लागू कर सकता हूं।

हालाँकि, मैं GitHub के बजाय GitLab पर अपना कांटा बनाना चाहूंगा।

क्या यह संभव है? कैसे?

मैंने यह लेख पढ़ा है: https://about.gitlab.com/2016/12/01/how-to-keep-your-fork-up-to-date-with-its-origin/

वैसे भी, मुझे यकीन नहीं है कि मुझे अपने मामले में क्या करना चाहिए।

  • मैं बस किसी तरह GitHub से परियोजना के GitLab पर एक कांटा बनाना चाहिए?
  • या मुझे GitHub से प्रोजेक्ट के GitLab पर दर्पण बनाना चाहिए?
  • या मुझे गीतालाब पर दर्पण बनाना चाहिए और फिर दर्पण को कांटना चाहिए?
  • या मुझे कुछ अलग करना चाहिए?

सही तरीका क्या है।

धन्यवाद।

अपडेट करें

GitLab पर रिपॉजिटरी मिररिंग का शायद मतलब नहीं है। मैं GitLab पर MY GitHub रिपॉजिटरी का दर्पण बना सकता हूं लेकिन मैं किसी और के रिपॉजिटरी का दर्पण नहीं बना सकता।

https://docs.gitlab.com/ee/workflow/repository_mirroring.html

मैंने अभी तक यही किया है:

मैंने अपनी स्थानीय मशीन में मूल गिटहब परियोजना को क्लोन किया है। मैंने अपनी स्थानीय रिपॉजिटरी में एक नई शाखा के लिए तय किया है। मैंने GitLab पर एक खाली प्रोजेक्ट बनाया है। मैंने अपनी स्थानीय रिपॉजिटरी में GitLab पर उस खाली परियोजना के लिए मूल सेट किया है और दोनों शाखाओं को GitLab में धकेल दिया है। मैंने अपने स्थानीय रिपॉजिटरी में GitHub रिपॉजिटरी में अपस्ट्रीम स्थापित किया है।

जब मैं मूल GitHub रिपॉजिटरी से GitLab पर रिपॉजिटरी (यानी रिपॉजिटरी सिंक करना) के लिए नए कमिट्स प्राप्त करना चाहता हूं, तो मैं अपने स्थानीय रेपो का उपयोग मध्यवर्ती चरण के रूप में कर सकता हूं। हालाँकि, GitHub पर रेपो और GitLab पर रेपो के बीच कोई सीधा संबंध नहीं है। क्या मेरा सेटअप सही है? अगर मैं GitHub पर कांटा बनाऊं तो क्या कोई अंतर है?

जवाबों:


130

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

फिर " अपस्ट्रीम " रिमोट के रूप में GitHub प्रोजेक्ट जोड़ें :

git remote add upstream https://github.com/user/repo

अब आप उठा सकते हैं और ऊपर की तरफ से खींच सकते हैं इसमें कोई बदलाव होना चाहिए। (यदि आपके पास अधिकार हैं, तो आप इसे पुश या मर्ज भी कर सकते हैं।)

git pull upstream master

अंत में, अपने खुद के GitLab रिपॉजिटरी में वापस धकेलें:

git push origin master

यदि आप मैन्युअल रूप से अपस्ट्रीम / पुश मूल को खींचना नहीं चाहते हैं, तो GitLab सेटिंग्स => रिपॉजिटरी => मिररिंग रिपॉजिटरी में एक मिररिंग क्षमता प्रदान करता है।


15
मैं सिर्फ इस उत्तर को पूरक करना चाहूंगा कि यह सही दृष्टिकोण क्यों है। "फोर्किंग" GitHub द्वारा बनाई गई एक अवधारणा है जो इस प्रकार केवल GitHub पर मौजूद है, फिर भी उपयोगी है। यदि आप अपने आप को शुद्ध गिट मानते हैं (जैसे आपके नेटवर्क में कहीं चल रहा शुद्ध जीआईटी सर्वर), तो यह आपके अपने सर्वर पर रेपो को क्लोन करने और फिर अपने स्थानीय कंप्यूटर पर क्लोन करने जैसा होगा। आप मूल रेपो को स्थानीय स्तर पर अपस्ट्रीम के रूप में जोड़ देंगे। मेरा मानना ​​है कि पर्दे के पीछे गिटहब क्या करता है।
ब्रूनो फिंगर

9
बस ऐसे ही forking जोड़ना चाहते हैं करता है GitLab पर मौजूद हैं, को देखने के लिए यहां उदाहरण के लिए।
बेल्लेक

1
मुझे उपयोग करना था: पुल-अप मास्टर
क्लो

आप बाद में पुल अनुरोध कैसे सबमिट करते हैं?
एरिक एरोनिटी

1
@ErikAronesty "चाल अनुरोध" के रूप में ट्रिकियर एक गिट चीज़ नहीं है, बल्कि एक GitHub चीज़ है। हालांकि ऐसा करने का एक तरीका है कि GitHub पर एक कॉपी को फोर्क करें और एक दूसरे रिमोट के रूप में अपने फोर्क्ड रेपो को जोड़ें git remote add upstream-fork git@github.com:myuser/repo। फिर यह सिर्फ एक मामला है git push upstream-fork masterऔर GitHub साइट के माध्यम से अपने पुल अनुरोध सबमिट करें।
क्रिस वाट्स

18

केवल ब्राउज़र तरीका:

  1. Gitlab में एक नया प्रोजेक्ट बनाएं (बस एक खाली प्रोजेक्ट जिसका नाम ठीक है)
  2. सेटिंग्स पर जाएं -> रिज़ॉल्यूशनरी
  3. 'मिररिंग रिपॉजिटरी' के तहत GitHub URL दर्ज करें
  4. सुनिश्चित करें कि 'मिरर दिशा' 'पुल' है
  5. 'मिरर रिपोजिटरी' बटन दबाएं
  6. दिखाई देने वाली प्रविष्टि के बगल में सिंक आइकन दबाएं

मेरे पास एंटरप्राइज एडिशन लाइसेंस नहीं है, यानी मैं चरण 3 से "मिररिंग रिपॉजिटरी" नहीं देख सकता हूं। वैसे भी, अगर मेरे पास ऐसा कोई लाइसेंस होता, तो क्या मैं किसी और के GitHub रिपॉजिटरी का दर्पण बना सकता था?
सीमलमन

1
@ किमलमैन यह अजीब है, क्योंकि मैं भी एक मुफ्त लाइसेंस पर हूं। शायद फिर से जाँच करें? Be सेटिंग्स-> रिपोजिटरी ’में तीसरा स्थान होना चाहिए। बस स्पष्ट होने के लिए: साइडबार पर सेटिंग्स, प्रोफ़ाइल मेनू नहीं।
aksh1618

साइड बार पर सेटिंग्स -> रिपॉजिटरी पर क्लिक करने के बाद, मैं सेक्शन प्रोटेक्टेड ब्रांच, प्रोटेक्टेड टैग, डिप्लॉय की, डिपोजिट टोकन देख सकता हूं।
Cimlman

2
@ Cimlman आप एक कस्टम / स्थानीय gitlab उदाहरण का उपयोग कर रहे हैं? मेरे पास gitlab.com पर मेरे व्यक्तिगत, मूल खाते में कई और विकल्प हैं
aksh1618

1
हम स्व-प्रबंधित इंस्टॉलेशन, संस्करण 10.7.2 का उपयोग कर रहे हैं। नवीनतम रिलीज़ 11.6 है। ठीक है, यह एक अच्छा बिंदु है। :) मैं हमारे GitLab पर आपके समाधान की कोशिश नहीं कर सकता। वैसे भी, समस्या अब मेरे लिए अप्रचलित है। यह हमारी कस्टम बग-थ्री पार्टी लाइब्रेरी के बग फिक्स के बारे में था। हालाँकि, बग फिक्स को उस लाइब्रेरी की आधिकारिक रिलीज़ में पहले ही शामिल कर लिया गया है।
Cimlman

0

एक निजी जीथब रिपॉजिटरी को फोर्क करना संभव है।

  1. नए प्रोजेक्ट पर क्लिक करें
  2. आयात का चयन करें
  3. गिथब का चयन करें
  4. OAuth2 ने गिटलैब ऐप को प्रमाणित करने और ऑटो बनाने के लिए उपयोग किया
  5. कांटा के लिए परियोजना का चयन करें

^ मैंने इसे जीथब पर एक निजी रेपो के साथ किया है, सफलतापूर्वक आयात (शाखाएं आदि)। आयातित परियोजना को स्वचालित रूप से निजी रखा गया है;)


2
प्रोजेक्ट आयात के लिए "व्यक्तिगत एक्सेस टोकन" की आवश्यकता होती है। मैंने GitHub पर एक बनाने की कोशिश की। ऐसा लगता है कि यह सुविधा तब उपयोगी है जब मैं GitHub पर अपनी परियोजना से GitLab पर एक परियोजना बनाना चाहता हूं। क्या यह धारणा सही है? सवाल किसी और के GitHub प्रोजेक्ट को कांटेक्ट करने का है।
साइमलमैन

2
-1 क्योंकि, और जैसा कि पिछली टिप्पणी में कहा गया है, सवाल किसी और के जीथब प्रोजेक्ट को कांटेक्ट करने के बारे में है। इस उत्तर के निर्देश ऐसे मामले में काम नहीं करेंगे।
निकोस एलेक्जेंड्रिस

1
@NikosAlexandris क्या आप सुनिश्चित हैं? क्या आप अपने खाते के लिए एक पहुंच टोकन नहीं बना सकते हैं और किसी और के रेपो को एक्सेस कर सकते हैं जिसे आपने पढ़ा है? (उदाहरण के लिए, हर एक सार्वजनिक रेपो)
DGoiko

0

फोर्क करने के बजाय, आप केवल वेब इंटरफ़ेस का उपयोग करके किसी भी सार्वजनिक रूप से उपलब्ध GitHub रिपॉजिटरी को आयात कर सकते हैं:

  1. अपने GitLab डैशबोर्ड से नई परियोजना पर क्लिक करें
  2. स्विच करने आयात परियोजना टैब
  3. URL बटन द्वारा रेपो पर क्लिक करें
  4. "गिट रिपॉजिटरी URL" और शेष प्रोजेक्ट फ़ील्ड भरें
  5. आयात प्रक्रिया शुरू करने के लिए प्रोजेक्ट बनाएं पर क्लिक करें
  6. एक बार पूरा होने के बाद, आप अपनी नई बनाई गई परियोजना पर पुनर्निर्देशित हो जाएंगे

इस तकनीक का उपयोग हाल ही में किया गया है, और यह बिना GitHub खाते के किसी भी सार्वजनिक भंडार पर काम करता है। जानकारी के स्रोत के लिए इस GitLab डॉक्स पृष्ठ को देखें ।


1
ठीक। और अगर GitHub पर मूल रिपॉजिटरी में नए कमिट जोड़े जाते हैं, तो क्या मैं केवल GitHub पर रिपॉजिटरी में बदलाव को मर्ज कर सकता हूं? यह एक पेचीदा ऑपरेशन है और हो सकता है कि यह एक मध्यवर्ती रिपॉजिटरी के बिना नहीं किया जा सके (प्रश्न का अंतिम पैराग्राफ देखें)।
Cimlman
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.