Yerel bir Git dalı uzak bir depoya nasıl kopyalanır


127

Şimdiye kadar aşağıdaki adımları attım:

  1. Uzak bir Git deposunu klonladı
  2. Ana şubeyi deneysel bir
  3. deneysel dalda düzenlenmiş / test edilmiş / kaydedilmiş kod

Şimdi, deneyselliği usta ile birleştirmeye hazır değilim. Bununla birlikte, birkaç meslektaşımla paylaştığım depo olduğu için onu uzak depoya geri göndermek istiyorum. Deneysel dalda ne yaptığımı görmelerini isterim. Genellikle uzak depoya SSH aracılığıyla erişirim.

Uzak deponun ana şubesini etkilemeden yerel şubemi uzak depoda nasıl paylaşırım?


Bu bağlantı da bu açıdan çok kullanışlıdır. Git dallarını paylaşmak
Vishnu Kumar

Yanıtlar:


157

Göre git push manuel sayfa :

 git push origin experimental

experimentalKaynak depoda eşleşen bir ref bulun (büyük olasılıkla bulur refs/heads/experimental) ve aynı ref (örn. refs/heads/experimental) Kaynak deposunda onunla güncelleyin .
Eğer experimentaluzaktan olmasaydı, bu yaratılmış olacaktır .

Bu şununla aynıdır:

git push origin experimental:refs/heads/experimental

Şube oluşturma experimentalakım kopyalayarak kökenli depoda experimentaldalı.
Bu form yalnızca, yerel ad ve uzak ad farklı olduğunda uzak depoda yeni bir dal veya etiket oluşturmak için gereklidir ; aksi takdirde ref adı kendi başına çalışacaktır.

Veya git ipucunda belirtildiği gibi , bir "Şube Varsayılan Uzaktan Kumandası" kurabilirsiniz:

Belirli bir şubeye varsayılan bir uzaktan kumanda atamak için git config'i kullanabilirsiniz. Bu varsayılan uzaktan kumanda, aksi belirtilmedikçe bu dalı itmek için kullanılacaktır.

Git klonu kullandığınızda bu sizin için zaten yapılır ve git push'u herhangi bir argüman olmadan yerel ana şubeyi kaynak havuzun ana dalını güncellemek için itmek için kullanmanıza izin verir.

git config branch.<name>.remote <remote> 

bunu manuel olarak belirlemek için kullanılabilir.


Jan öneriyor ( git> = 1.7.0 için ) push -u(veya push --set-upstream) seçeneği:

Güncel veya başarıyla iletilen her dal için, bağımsız değişkensiz git-pull (1) ve diğer komutlar tarafından kullanılan yukarı akış (izleme) başvurusu ekleyin.

Bu şekilde, herhangi bir git yapılandırması yapmanız gerekmez.

git push -u origin experimental

12
Yerel şubenizin uzaktaki şubeyi herkese açık hale getirdikten sonra izlemesini sağlamak için -useçeneğini kullanmalısınız push. -uSeçeneği kullanmayı unutursanız git push -u, daha sonra şubeye yazabilirsiniz , sonra git pullçalışacaktır.
Ocak 2011

Bunu yaptığında fark ettim git push origin experimental , herhangi bir paketin yüklendiğine dair bir kanıt olmadığını . Görünüşe göre uzaktan kumandada daha önceki basışınızdan alınan tüm malzeme zaten var; sadece referanslara bağlanması gerekiyor .
Kaz

@Kaz: Bu yeni taahhütler uzaktan başka bir şubeye zaten itilmiş olsaydı, tüm malzemeye sahip olurdu. Bu durumda, git push origin experimentalsadece experimentaluzaktan kumanda üzerinde bir dal yaratırdı .
VonC

Teşekkür ederim! Cevabınız çok yardımcı oldu.
hakre

15

Şubenizin adı experimentalve uzaktan kumandanın adı ise origin, o zaman

git push origin experimental

Yukarıdaki ile aynı yorum, ancak bu deneysel dalı örtük olarak uzak depoda mı yaratıyor yoksa uzaktaki ana depoya itecek mi?
Coocoo4Cocoa

1
deneysel dalı iter ve ne yerel tarafta ne de uzaktan ustaya dokunmaz
John Douthat

1

git push -u <remote-name> <branch-name>yeni oluşturulan şube aynı depodan çıkmadıysa, yani yeni şubeyi kullanarak oluşturmadıysanız git checkout -b new_branchçalışmaz.

Örneğin, yerel olarak iki farklı depoyu klonladım ve repo2 / branch1'i repo1 /'e kopyalayıp sonra da itmek zorunda kaldım.

Bu bağlantı yerel şubemi (başka bir depodan klonlanmış) uzak depoma itmeme yardımcı oldu:



0

tl; Dr.

$ git push --set-upstream origin your_new_branch

Daha fazla bilgi

birkaç taahhütte bulunduktan sonra:

$ git checkout -b your_new_branch
$ git add file
$ git commit -m "changed file"

şubenizi aşağıdaki gibi uzak depolardan birine bir yukarı akış belirleyerek itiyorsunuz:

$ git push --set-upstream REMOTE YOUR_BRANCH

uzaktan kumandalar tarafından görülebilir

$ git remote -v

genellikle, tek bir varsayılan uzaktan kumandanız olur origin. yani komutun şöyle görünür:

$ git push --set-upstream origin your_new_branch

ve tüm müteakip itmeler sadece ile yapılabilir git push.

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.