GitHub से Bitbucket के लिए फोर्किंग


161

मैं CakePHP पर आधारित एक परियोजना पर काम कर रहा हूं , जिसे GitHub पर होस्ट किया गया हैमेरे प्रोजेक्ट को बिटकॉइन पर होस्ट किया जा रहा है । दोनों ही गिट का इस्तेमाल करते हैं । मूल रूप से मैं अपने Bitbucket रिपॉजिटरी में CakePHP का एक 'कांटा' (मुझे नहीं पता कि मैं सही शब्दों का उपयोग कर रहा हूं, क्योंकि मैं git में नया हूं ) को बनाना चाहता हूं, ताकि मैं अपडेट प्राप्त कर सकूं। सभी CakePHP ज़िप / टार डाउनलोड करने और फ़ोल्डर को बदलने की आवश्यकता के बिना, फिर प्रतिबद्ध और धक्का दें, लेकिन शायद एक 'मर्ज' (?) के साथ।


5
इस तरह के वर्कफ़्लो के लिए एक अच्छे दृष्टिकोण के लिए stackoverflow.com/questions/1811730/… देखें ।
Dolbz

@ डॉल्ब यह सही लगता है कि मुझे क्या चाहिए, धन्यवाद!
एन्ट्रोपिड

जवाबों:


144

आज विभिन्न साइटों पर "पुल अनुरोध" भेजना संभव नहीं है। मैंने Bitbucket समस्या ट्रैकर में इसके लिए एक सुविधा अनुरोध जोड़ा है: # 3288 । मेरा सुझाव है कि यदि आप इसे ट्रैक करना चाहते हैं तो आप अपने आप को एक अनुयायी के रूप में जोड़ सकते हैं।

हालाँकि, आप अभी भी GitHub से Bitbucket तक स्रोत को स्थानांतरित कर सकते हैं, बिना किसी जिप फाइल या टारबॉल डाउनलोड करने के। आप GitHub से एक क्लोन बनाते हैं और Bitbucket को धक्का देते हैं:

$ git clone https://github.com/cakephp/cakephp
$ cd cakephp
$ git push git@bitbucket.org:mg/cakephp.git master

मैंने mg/cakephpपहले Bitbucket में एक खाली गिट रिपॉजिटरी के रूप में बनाया । इस तरह आप परिवर्तन को GitHub से Bitbucket तक खींच सकते हैं।


3
फिर हम ऊपर से कैसे खींच सकते हैं?
रुचिर शुक्ला

1
@ रुचिरशुकला: उसी तरह, मूल रूप से। आपको अपने अपस्ट्रीम से खींचकर अपने स्वयं के मशीन के माध्यम से कमिट को स्थानांतरित करना होगा। फिर आप इसे दूसरी होस्टिंग साइट पर ले जाते हैं, जिससे दोनों में तालमेल बैठ जाता है।
मार्टिन गेइस्लर

4
यह मेरे लिए बहुत अच्छा काम हुआ, सिवाय इसके कि मुझे cd cakephpइन दोनों आज्ञाओं के बीच की जरूरत थी । गैर-शुरुआती लोगों के लिए स्पष्ट, हाँ, लेकिन शुरुआती आश्चर्यचकित हो सकते हैं कि यह काम क्यों नहीं कर रहा है।
एरोनबार्टेल

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

यह एक के रूप में काम नहीं करता है fork। शाखाओं और टैग को BitBucket पर कॉपी नहीं किया जाता है।
जोएल करुणंगन

81

नीचे दिए गए वर्कफ़्लो में जीथब रिपॉजिटरी को एक नया रिमोट कहा जाता है syncऔर बिटबकेट रिमोट के रूप में origin। यह एक शाखा भी जोड़ता है जिसे githubगीथब रिपॉजिटरी और एक शाखा कहा जाता हैmaster को ट्रैक करने के लिए बिटबकेट रिपॉजिटरी को ट्रैक करने के लिए है। यह मानता है कि आपके पास "myrepository" नामक एक बिटबकेट रिपॉजिटरी है जो खाली है।

सेटअप रीमोट करता है

# setup local repo
mkdir myrepository
cd myrepository
git init

# add  bitbucket remote as "origin"
git remote add origin ssh://git@bitbucket.org/aleemb/myrepository.git

# add github remote as "sync"
git remote add sync https://github.com/aleemb/laravel.git

# verify remotes
git remote -v
# should show fetch/push for "origin" and "sync" remotes

सेटअप शाखाएँ

# first pull from github using the "sync" remote
git pull sync

# setup local "github" branch to track "sync" remote's "master" branch
git branch --track github sync/master

# switch to the new branch
git checkout github

# create new master branched out of github branch
git checkout -b master

# push local "master" branch to "origin" remote (bitbucket)
git push -u origin master

अब आपके पास githubgithub repo की masterशाखा पर नज़र रखने वाली स्थानीय शाखा होनी चाहिए । और आपके पास masterबिटबकेट रेपो ( masterडिफ़ॉल्ट रूप से शाखा) पर नज़र रखने वाली स्थानीय शाखा होनी चाहिए ।

इससे githubशाखा पर एक पुल बनाना आसान हो जाता है , फिर शाखा में उन परिवर्तनों को मर्ज कर दें master(हालांकि मर्ज पर पसंदीदा छूट) और फिर आप masterशाखा को धक्का दे सकते हैं (इसे बिटबकेट में धकेल देंगे)।


यह काम नहीं करता है, लेकिन यह एक अच्छा विचार है। वैसे भी इसे काम करने के लिए ठीक करने के लिए?
बोज़डोज़

स्थानीय github शाखा दूरस्थ github मास्टर शाखा को ट्रैक करती है, तो आप दूरस्थ बिटबकेट मास्टर को धक्का देते हैं? जीथब को पुश कब होता है? @ बहेलिए
बोजडोज़

1
Git में 2.2.1 --set-upstreamपदावनत है ... लेकिन यह तब तक काम करता है जब तक आप githubअपस्ट्रीम रेपो सेट करने की कोशिश करने से पहले शाखा बनाते हैं ।
केन प्रिंस

3
इसके बजाय git fetchgit branch --track github sync/master
-सेट

3
मुझे लगता है कि क्या गायब है git checkout githubऔर git checkout -b mastergit शाखा कमांड के बाद है। आप उन शाखाओं के साथ समाप्त हो जाएंगे ( git branch -a): गितुब, मास्टर, रीमोट्स / ओरिजिन / मास्टर,
रीमोट्स

31

यदि आप अपने रेपो को अद्यतित रखना चाहते हैं, तो दो upstreamरीमोट का उपयोग करें: गिथब ( origin) और बिटबकेट ( ) जैसे:

# Clone original CakePHP source code from Github
git clone --mirror https://github.com/cakephp/cakephp
cd cakephp
# Rename remote from `origin` to `upstream`
git remote rename origin upstream
# Add your Bitbucket repo (this is where your code will be pushed)
git remote add origin https://bitbucket/your/repo.git
# Push everything to Bitbucket
git push --mirror origin

Github से CakePHP के अपडेट को खींचने के लिए:

git pull upstream master

अपने कोड परिवर्तन को Bitbucket में धकेलने के लिए:

git push origin master

मुझे लगता है कि आप पहले कमांड में `git क्लोन mybitibucket / cakephp / cakephp` का मतलब है git, है ना? यह रास्ता है ....
ribamar

यह सिर्फ महान है! अनेक अनेक धन्यवाद! बहुत सराहना की गई
आकांक्षा

यह भी काम नहीं करता है। Bitbucket में शाखाएँ और टैग शामिल नहीं हैं।
जोएल करुंगन

@JoelKarunungan अच्छी बात! सब कुछ पुश करने के लिए, शाखाओं और टैग सहित, मुझे लगता है कि यह काम करना चाहिए git push --all --mirror origin:। उत्तर अपडेट किया गया।
जुबिन

@Zubin क्या आपने यह कोशिश की? fatal: --all and --mirror are incompatible भी: git pull upstream masterएक घातक त्रुटि फेंकता है। fatal: Couldn't find remote ref master
जोएल करुंगन

14

BitBucket में एक नया रिपॉजिटरी बनाते Import repositoryसमय, ऊपर दाईं ओर स्थित बटन पर क्लिक करें । Clone or downloadआप जिस स्थान पर कांटा चाहते हैं, उसके लिए Github में क्लिक करते समय पाया जाने वाला https url दर्ज करें ।

अपनी रिपॉजिटरी को एक नाम दें, अपनी गोपनीयता सेटिंग्स को कॉन्फ़िगर करें, और वहां आप जाएं!


1
वह क्लोनिंग है, फोर्किंग नहीं, जो अलग बात है।
एंट्रोपिड

7
इस सुविधा को अब के रूप में, बिटबकेट पर 'आयात भंडार' लेबल किया गया है।
जंगली पोट्टोक

1
@entropid एक कांटा मूल रेपो का क्लोन है। गिट वर्ल्ड में, फोर्किंग == क्लोनिंग
enorl76

@ enorl76 विशेष रूप से तब नहीं जब यह सामान्य उपयोग के लिए आता है।
रिग

2
@ enorl76 हाँ तकनीकी रूप से यह है। लेकिन कांटा मूल रिपॉजिटरी से क्लोन को "कनेक्ट" रखने का एक तरीका है ताकि इससे अपडेट प्राप्त किया जा सके और अंत में इस पर जोर दिया जा सके। यह वह जगह है जहां 'मूल' और 'अपस्ट्रीम' लिंक का संयोजन एक मौलिक भूमिका निभाता है। Github और Bitbucket ने कांटे के चारों ओर सभी उपकरणों का एक सेट बनाया, जिससे कांटा अधिक उत्पादक और मैत्रीपूर्ण हो, जैसे "पुश रिक्वेस्ट" चीज :)
Dan Niero

0

मुझे लगता है कि आप आसानी से अपने प्रोजेक्ट के साथ रिपॉजिटरी को आसानी से डाउनलोड करना चाहते हैं ... और यह कि आप cakePHP में योगदान नहीं देंगे, सही है?

यदि हां, तो आपको बस अपने रेपो में एक बाहरी संदर्भ जोड़ना होगा।

SVN: GIT में एक्सटर्नल बराबर?

और बाद में, भले ही आप cakePHP में योगदान करना चाहते हैं, आप मूल रेपो में बस ठीक कर सकते हैं।


0

मैंने देखा है कि @Martin Geisler के जवाब के बाद से, Bitbucket ने github.com से रिपॉजिटरी आयात करने के लिए एक सुविधा सक्षम की है

मैं सफलतापूर्वक gbubetet.org पर एक निजी रेपो में github.com से एक निजी रेपो आयात करने में सक्षम था

यहाँ कदम हैं :

  1. क्रिएट बटन पर क्लिक करें और रिपॉजिटरी ('+'> रिपॉजिटरी) चुनें
  2. अब, एक नया रिपॉजिटरी बनाने के बजाय, मोडल के शीर्ष दाएं कोने से एक आयात रिपॉजिटरी चुनें जो पॉप अप करता है।
  3. रिपॉजिटरी आयात करने के लिए नए मोडल पर अपने गिथुब रेपो के URL और अपने प्रमाणीकरण क्रेडेंशियल्स भरें।
  4. बस। Github से सुचारू रूप से बिटबकेट में सब कुछ आयात होता है।

स्क्रीनशॉट के दाहिने शीर्ष कोने पर आयात भंडार लिंक पर ध्यान दें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.