2011-04-11 24 views
38

Aynı satırda git push origin ve git push my_other_remote yapmak istiyorum. Mümkün?Git: Bir komutta iki depoya itme

+0

Bunu standart komutları kullanarak yapabileceğinizi sanmıyorum, ancak 'git-multipush' veya bir şeyler yazıp bunu kullanabilirsiniz. –

+0

Olası çoğaltma [birden çok uzak konumdan çekme/itme] (http://stackoverflow.com/questions/849308/pull-push-from-multiple-remote-locations) – techraf

cevap

84

Aynı etkiyi, origin uzaktan kumandanız için ekstra bir itme URL'si ekleyerek alabilirsiniz. Örneğin, mevcut uzaktan kumanda URL'lerse şöyle:

$ git remote -v 
origin [email protected]:something.git (fetch) 
origin [email protected]:something.git (push) 
my_other_remote git://somewhere/something.git (fetch) 
my_other_remote git://somewhere/something.git (push) 

Sen yapabilirdi:

git remote set-url --add --push origin git://somewhere/something.git 

Sonra git push origin hem depolarına itecektir. Bununla birlikte, karışıklığı önlemek için bunun için both adlı yeni bir uzaktan kumanda kurmak isteyebilirsiniz. Sonra

git remote add both [email protected]:something.git 
git remote set-url --add --push both [email protected]:something.git 
git remote set-url --add --push both git://somewhere/something.git 

...: Örneğin:

git push both 

... hem depolarına itmek için çalışacağız.

+0

Bu ayrıca 'uzak/kökeni' ve uzaktan/my_other_remote' izleme dalları? –

+0

@ Paŭlo Ebermann: benim (çok kısa) testler, her ikisinin de URL'lerinin push URL'leri olarak eklendiği durumlarda, refs/remotes/origin/master' ve 'refs/remotes/my_other_remote/master' öğelerinin her ikisinin de güncelleneceğini gösteriyor. 'kökeni' ve 'itme menşei' yaparsınız. –

+0

Bu, muhtemelen aradığım şey gibi görünüyor, ama yine de biraz kafam karıştı ... Uygulamamı Heroku'ya ve BitBucket'e vermek istesem nasıl devam edeceğim? Öncelikle, Heroku'ya ve ardından BitBucket'te bir repo oluşturmak için aynı şekilde repo ve komite yaratmak zorundayım, ya da doğru yol nedir? – user984621

10

Sen .git/config dosyasında aşağıdaki koyabilirsiniz:

[remote "both"] 
    url = url/to/first/remote 
    url = url/to/other/remote 

Artık git push both kullanarak her iki URL'ler için zorlayabilir.

siz de size .git/config dosyasında aşağıdaki satırları ekleyebilirsiniz (senkronizasyon için faydalıdır) onlardan getirmek istiyorsanız

:

[remotes] 
    both = origin, other 

Şimdi de git fetch both çalıştırabilirsiniz.

+6

temel olarak Mark'ınkiyle aynı olan (manuel düzenleme ile yaptığınız gibi) sunduğunuz çözüm ya da başka bir fark var mı? –

+2

Fark yok. – silvio