Bir projenin birden fazla kaynağı olabilir mi?


188

Bir projenin Git'te iki (veya daha fazla) "kaynağı" olabilir mi?

Her ikisi Tek bir projeyi itmek istiyoruz github ve bir Heroku sunucusuna.

Özellikle, bu hata github deposu eklenirken görünür:

$ git remote add origin https://github.com/Company_Name/repository_name.git
fatal: remote origin already exists.

8
İstediğiniz kadar uzak deponuz olabilir, ancak onlara farklı adlar vermelisiniz.
Felix Kling

Bu durumda havuz adı farklıdır. "Orijin" kelimesi değiştirilebilecek bir isim mi?
Chris Dutrow

4
Evet, git remote rename <old> <new>: linux.die.net/man/1/git-remote . Ancak Github deposunu farklı bir şekilde de adlandırabilirsiniz ...
Felix Kling


Ve uzaktan kumandalardan birini varsayılan yapmak mümkün mü, bu yüzden her ittiğimde uzaktan kumandanın adını açıkça yazmam istenmiyor mu?
40 dedektif

Yanıtlar:


277

İstediğiniz kadar uzaktan kumandaya sahip olabilirsiniz, ancak yalnızca "origin" adlı bir uzaktan kumandanız olabilir. "Orijin" adı verilen uzaktan kumanda hiçbir şekilde özel değildir, ancak mevcut bir havuzu kopyaladığınızda Git tarafından oluşturulan varsayılan uzaktan kumanda olması dışında. İkinci bir uzaktan kumanda yapılandırabilir, o uzaktan kumandadan itebilir / çekebilir ve bazı şubeleri başlangıç ​​noktası yerine o uzaktan kumandadaki dalları izlemek için ayarlayabilirsiniz.

Bunun yerine "github" adlı bir uzaktan kumanda eklemeyi deneyin:

$ git remote add github https://github.com/Company_Name/repository_name.git

# push master to github
$ git push github master

# Push my-branch to github and set it to track github/my-branch
$ git push -u github my-branch

# Make some existing branch track github instead of origin
$ git branch --set-upstream other-branch github/other-branch

4
Bunun muhtemelen çoğaldığı sorusuna en yüksek oyu veren cevapla belirtildiği gibi - bir uzaktan kumanda birden çok depoya başvurabilir. Bu nedenle edebilir o OP'ın hedefi olsa eğer uzak bir ve güncelleme için iki ya da daha fazla depoları, net değil itin.
AD7six

Yine de bunu neden yapmak isteyebileceğinize dair bazı pratik örnekler nelerdir? Neden bir dizinin birkaç depoya işaret etmesini istersiniz? Her depo genellikle kendi özel
direktifine sahiptir

4
@mightyspaj Heroku'ya giden herkesin uzaktan kumandası originve uzaktan kumandası var heroku.
meagar

@mightyspaj, ya da ekibiniz çatal kullanıyorsa ve bazen onlara erişmek istiyorsanız. Bunu farklı UTC'deki ekiplerle çalışarak ekibimizde yapıyoruz, böylece PR'ları onayladığımızda, orada çatal kullanarak yeniden adlandırabilir / itebiliriz ve şimdi yarıyı değil, kodu birleştirebiliriz).
Benoit Drapeau

Tüm yerel şubeleri aynı anda yeni uzaktan kumandaya aktarmanın bir yolu var mı?
Tanasis

89

Daha sonra bu soruya tökezleyen herkes için bir yan not olarak, bir kerede birden fazla git depo sunucusuna kaynak aktarımı yapmak mümkündür.

Başlangıç ​​uzaklığına başka bir URL eklemek için aşağıdaki komutu kullanarak bunu başarabilirsiniz.

git remote set-url --add origin ssh://git@bitbucket.org/user/myproject.git

8
Bununla ilgili daha fazla düşünce için bu soruya bakın .
moi

3
Tamam, bu kökeni birini silmeden nasıl silebilirim?
Michael

@Michael ./git/configDosyayı düzenleyebilir ve url dosyasını [uzak "başlangıç ​​noktası"] bölümünden
kaldırabilirsiniz

8
@Michaelgit remote set-url --delete origin ssh://git@bitbucket.org/user/myproject.git
Afrig Aminuddin

Tüm uzaktan kumandaların aynı taahhüt geçmişi olmalı mı? Ya bazı taahhütleri diğerine değil bir uzaktan kumandaya itmek istersem
Qasim

44

İşte birden çok uzaktan kumanda ile örnek bir proje, GitHub ve GitLab:

  1. GitHub için uzaktan repo ekle

    $ git remote add github https://github.com/Company_Name/repository_name.git
    
  2. GitLab için uzaktan repo ekle

    $ git remote add gitlab https://gitlab.com/Company_Name/repository_name.git
    
  3. Artık projede birden fazla uzaktan kumanda var. İle çift kontrolgit remote -v

    $ git remote -v
    github https://github.com/Company_Name/repository_name.git (fetch)
    github https://github.com/Company_Name/repository_name.git (push)
    gitlab https://gitlab.com/Company_Name/repository_name.git (fetch)
    gitlab https://gitlab.com/Company_Name/repository_name.git (push)
    
  4. Birden fazla depoya nasıl aktarıyorsunuz?

    $ git push github && git push gitlab
    

2
Sadece $ git pushtüm uzaktan kumandalara itmeyecek mi?
Su Soğutucu v2

Github'u sonra gitlab'a otomatik itmeye çalıştığımızda sorun var. Lütfen bana yardım eder misin? Birer birer itmek istiyorum.
Mitul Marsoniya

gitlab, iki depo iki proje varsa nasıl bu ile çalışır. bir projeden kod almak sonra diğer projeye itmek?
muzi jack

2

kaynak yerine farklı bir ad vererek deponuza başka bir uzak hesap ekleyebilirsiniz. Origin2 gibi bir ad kullanabilirsiniz. böylece git komutunuz şu şekilde değiştirilebilir:

git remote add origin2 https://github.com/Company_Name/repository_name.git

1
git remote add origin2 https://github.com/Company_Name/repository_name.git

ve itme kullanımı için:

git push -u origin2 master

1
git remote set-url --add --push origin git@github.com:user/my-project.git
git remote set-url --add --push origin git@bitbucket.org:user/my-project.git

Şimdi 2 kökeniniz var.


1
Bu yanıt, --pushseçenek sayesinde diğerlerinden daha yararlı / rafine .
Dmitri Zaitsev
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.