GitHub'dan Bitbucket'e Forking


161

GitHub'da barındırılan CakePHP tabanlı bir proje üzerinde çalışıyorum . Projem barındırılan ediliyor Bitbucket . İkisi de git kullanıyor . Temelde bir 'çatal' (Doğru terimleri kullanarak ediyorsam yeniyim beri, bilmiyorum oluşturmak istediğiniz Git güncellemelerini elde edebilmek amacıyla, benim Bitbucket depoda CakePHP'nin) tüm CakePHP zip / tar dosyasını indirip klasörü değiştirmeye gerek kalmadan, taahhütte bulunun ve itin, ancak belki bir 'birleştirme' (?) ile.


5
Bu tür iş akışına iyi bir yaklaşım için stackoverflow.com/questions/1811730/… adresine bakın .
Dolbz

@Dolbz ihtiyacım olan şey doğru görünüyor, teşekkür ederim!
entropid

Yanıtlar:


144

Bugün farklı sitelere "çekme isteği" göndermek mümkün değildir. Bitbucket sorun izleyicisine bunun için bir özellik isteği ekledim: # 3288 . Bunu izlemek istiyorsanız kendinizi takipçisi olarak eklemenizi öneririm.

Bununla birlikte, herhangi bir zip dosyası veya tarball indirmek zorunda kalmadan kaynağı GitHub'dan Bitbucket'e taşıyabilirsiniz. GitHub'dan bir klon yaparsınız ve Bitbucket'e itersiniz:

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

Oluşturduğum mg/cakephpilk Bitbucket boş Git depo olarak. Bu şekilde, değişiklik kümelerini GitHub'dan Bitbucket'e itebilir / çekebilirsiniz.


3
Öyleyse yukarı akıştan nasıl çekebiliriz?
Ruchir Shukla

1
@RuchirShukla: temelde aynı şekilde. İşlemleri yukarı akıştan çekerek kendi makinende hareket ettirmelisin. Daha sonra bunu diğer barındırma sitesine zorlarsınız, böylece ikisini senkronize edersiniz.
Martin Geisler

4
cd cakephpİki komut arasına girmem dışında sadece benim için çok işe yaradı . Yeni başlayanlar için açık, evet, ancak yeni başlayanlar neden çalışmadığını merak edebilir.
aaronbartell

Bunu göstermek için bir youtube videosu yapabilir misiniz? Ben çoğaltamadım. Bu talimatları yapabildim, ancak ittiğim ve taahhüt ettiğimde, hala çatallı dal yerine ustaya itmeye çalışıyor.
Balmumu

Bu bir olarak çalışmaz fork. Dallar ve Etiketler BitBucket'e kopyalanmaz.
Joel Karunungan

81

Aşağıdaki iş akışı, github deposunu yeni bir uzaktan kumanda syncve bitbucket uzaktan kumandası olarak ekler origin. Ayrıca githubgithub deposunu izlemek için çağrılan bir dal ve bitbucket deposunu izlemek için çağrılan bir dal ekler master. Boş "myrepository" adında bir bitbucket deponuz olduğunu varsayar.

Kurulum uzaktan kumandaları

# 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

Kurulum dalları

# 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

Şimdi yerel githubşubenin github repo şubesini izlemesi gerekir master. Ve yerel masterşubenin bitbucket repo'yu izlemesi gerekir ( mastervarsayılan olarak şube).

Bu, githubdalda bir çekmeyi kolaylaştırır , daha sonra bu değişiklikleri masterdalda birleştirir (yine de birleştirme yerine tercih edilen taban) ve daha sonra masterdalı itebilirsiniz (bitbucket'e iter).


Bu işe yaramıyor gibi görünüyor ama iyi bir fikir. Neyse onu düzeltmek için düzeltmek için?
bozdoz

Yerel github dalı uzak github ana dalını izler, o zaman uzak bitbucket master'a mı basarsınız? Github'a ne zaman itilir? @aleemb
bozdoz

1
Git 2.2.1'de --set-upstreamkullanımdan kaldırıldı ... Ancak github, yukarı akış deposunu ayarlamaya çalışmadan önce dalı oluşturduğunuz sürece bu işe yarar.
Ken Prince

3
- set-upstream yapmak yerine: git fetchvegit branch --track github sync/master
Beaudinn Greve

3
Ne eksik olduğunu düşünüyorum git checkout githubve git checkout -b mastergit branch komutundan sonra. Bu şubeler ( git branch -a) ile sonuçlanacaksınız : github, usta, uzaktan kumandalar / kökeni / usta, uzaktan kumandalar / senkronizasyon / usta
Klemens Zleptnig

31

upstreamRepo'nuzu güncel tutmak istiyorsanız, iki uzaktan kumanda kullanın: Github ( ) ve Bitbucket ( origin) şöyle:

# 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'dan CakePHP güncellemelerini almak için:

git pull upstream master

Kod değişikliklerinizi Bitbucket olarak göndermek için:

git push origin master

Sanırım ilk komutta `git klon mybitibucket / cakephp / cakephp ' demek istedinizgit , değil mi? Bu gitmek için bir yol ....
ribamar

Bu harika! Bir ton teşekkürler! Çok takdir
Aakanksha

Bu da işe yaramıyor. Dallar ve Etiketler Bitbucket'e dahil değildir.
Joel Karunungan

@JoelKarunungan İyi bir nokta! Şube ve etiketler de dahil itme her şey, için, ben bu işe gerektiğini düşünüyorum: git push --all --mirror origin. Yanıt güncellendi.
Zubin

@Zubin bunu denedin mi? fatal: --all and --mirror are incompatible Ayrıca: git pull upstream masterÖnemli bir hata atar. fatal: Couldn't find remote ref master
Joel Karunungan

14

BitBucket'te yeni bir havuz oluştururken, Import repositorysağ üstteki düğmeyi tıklayın . Clone or downloadÇatallamak istediğiniz depo için Github'a tıklarken bulunan https url'sini girin .

Deponuza bir ad verin, gizlilik ayarlarınızı yapılandırın ve işte buradasınız!


1
Bu klonlamak, çatallamak değil, farklı bir şey.
entropid

7
Özellik, şu an için Bitbucket'te 'Depoyu içe aktar' olarak etiketlendi.
Vahşi Pottok

1
@entropid çatal orijinal repo klonudur. Git dünyasında, Forking == klonlama
enorl76

@ enorl76 Özellikle genel kullanım söz konusu olduğunda değil.
Rig

2
@ enorl76 evet teknik olarak öyle. Ancak çatal, klonu orijinal depoya "bağlı" tutmanın bir yoludur, böylece ondan güncelleme almak ve sonunda itmek. Burada 'köken' ve 'yukarı akış' bağlantılarının birleşimi temel bir rol oynamaktadır. Github ve Bitbucket daha sonra çatalı "itme isteği" gibi daha üretken ve arkadaşça yapmak için tüm araç setini inşa ettiler :)
Dan Niero

0

Sanırım sadece depoyu projenizle kolayca indirmek istiyorsunuz ... ve cakePHP'ye katkıda bulunmayacağınızı doğru mu?

öyleyse, deponuza harici bir referans eklemeniz yeterlidir.

SVN: GIT'de dışsal eşdeğer mi?

Ve daha sonra, cakePHP'ye katkıda bulunmak isteseniz bile, bunu orijinal repoda gayet iyi yapabilirsiniz.


0

@Martin Geisler'in cevabından bu yana, Bitbucket'in github.com'dan depoları içe aktarma özelliğini etkinleştirdiğini fark ettim.

Ben başarıyla bitbucket.org üzerinde özel bir repo içine github.com gelen özel repo içe başardı

İşte adımlar :

  1. Oluştur düğmesini tıklayın ve Depo ('+'> Depo) seçeneğini belirleyin
  2. Şimdi, yeni bir havuz oluşturmak yerine, açılan modun sağ üst köşesinden bir içe aktarma havuzu seçin.
  3. depoyu içe aktarmak için github repo URL'nizi ve yeni kipte kimlik doğrulama bilgilerinizi girin.
  4. Bu kadar. Her şey github'dan bitbucket'e sorunsuz bir şekilde aktarılır.

Ekran görüntüsünün sağ üst köşesindeki içe aktarma havuzunu not edin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.