Soru Var olan bir Git dalını uzak bir dalı takip et?


Uzak şubeleri izleyen yeni bir dalın nasıl yapıldığını biliyorum, ama Mevcut bir şubeyi uzak bir şubede nasıl yapabilirim?

Biliyorum sadece düzenleyebilirim .git/config dosya, ama daha kolay bir yolu olmalı görünüyor.


3080
2018-02-06 15:14


Menşei


Aşağıda belirtildiği gibi, mevcut bir şube için kullanabilirsiniz git push -u origin branch-name. - Zags
Referans için, git branch belgeleme.
Yerel şube geçerli şubeyse ve yerel şube zaten bir uzak izleyiciyi izlemiyorsa, git pull genellikle izleme bilgilerini ayarlamak için uygun komut hakkında yardımcı mesajlar sağlar - billrichards
Git öğrencilerine git belgelerine bir link gösterilmek istendiğinde can sıkıcı. Bu belgeler insanlar için yazılmış gibi görünüyor. zaten Git ile ne yaptığını biliyorum. - Felipe Alvarez
Git 2.10 itibariyle, ilk önce yerel şubeye giriş yapmalı ve sonra bunu yapmalısınız. git branch --set-upstream-to origin/<branch> - Mahdi Javaheri


Cevaplar:


Bir dal verildi foo ve bir uzaktan kumanda upstream:

Git 1.8.0'dan itibaren:

git branch -u upstream/foo

Veya yerel şube foo mevcut şube değil:

git branch -u upstream/foo foo

Ya da, daha uzun komutlar yazmak isterseniz, bunlar yukarıdaki ikisine eşdeğerdir:

git branch --set-upstream-to=upstream/foo

git branch --set-upstream-to=upstream/foo foo

Git 1.7.0'dan itibaren:

git branch --set-upstream foo upstream/foo

Notlar:

Yukarıdaki komutların tümü yerel şubeye neden olur foo uzak şube izlemek için foo uzaktan upstream. Eski (1.7.x) sözdizimi yeni (1.8+) sözdizimi lehine kaldırılmıştır. Yeni sözdiziminin daha sezgisel ve hatırlanması daha kolay olması amaçlanmıştır.


Ayrıca bakınız: Neden her zaman "--set-upstream" yapmam gerekiyor?


3752
2018-02-18 03:06



Uzaktan kumandanın adı "upstream" mi? yani çoğu "varsayılan" olarak adlandırılan şey nedir? - Andrew Vit
@Andrew: Evet. git branch --set-upstream master origin/master Bir depoyu ilk kez klonladığınızda otomatik olarak ne yapıldığına eşdeğer olacaktır. - Dan Moulding
İlgili bir notta, bunu gitconfig dosyanıza eklemek harika bir şey: "[push] varsayılan = izleme", bu, itme işleminin, gelen çekilişe gideceği yerden devam etmesini sağlayacak :) - jpswain
"Ölümcül: Geçerli bir nesne adı değil: 'origin / master'." - joachim
git push -u origin foo  üzerinden - Cotton


Aşağıdakileri yapabilirsiniz (master üzerinde kontrol edildiğinizi varsayarak ve uzak bir dal masterına basmak istediğinizde):

Henüz sahip değilseniz, 'uzak' ayarını yapın

git remote add origin ssh://...

Şimdi takip etmek için master'ı yapılandırın:

git config branch.master.remote origin
git config branch.master.merge refs/heads/master

Ve itin:

git push origin master

206
2018-03-09 08:50



Uzaktan kumanda ve itme kolunda gerçekten gerekli mi? Demek istediğim, kontrol edilen dalın itmek istediğin kişi değilse, buna ihtiyacın var, değil mi? - Doppelganger
Evet - ama bellekten ilk itme için açık olması gerekebilir. Elbette kolayca test edilebilir ... :) - Paul Hedderly
+1 Bu, 1.8 öncesi msysgit "önizleme" ile sıkışmış Windows kullanıcıları için bir cevaptır. Bunun için teşekkürler. - John
Bu benim için çalışan tek cevap. Kabul edilen cevabı denediğimde, varolan bir şube için uzaktaki uzaktan kumandayı ayarlamak için: error: the requested upstream branch 'upstream/master' does not exist. - Steve K
@SteveK, bu büyük olasılıkla üst akışınız denir origin ve yok upstream. - umläute


Bunu iterek yan etki olarak yapıyorum -u seçenek olarak

$ git push -u origin branch-name

Eşdeğer uzun seçenek --set-upstream.

git-branch komut da anlıyor --set-upstreamama kullanımı kafa karıştırıcı olabilir. 1.8.0 Versiyonu arayüzü değiştirir.

git branch --set-upstream onaylanmamıştır ve nispeten uzak bir gelecekte kaldırılabilir. git branch [-u|--set-upstream-to] argümanların iyi bir düzeniyle tanıştırıldı.

...

Söylemek cazipti git branch --set-upstream origin/masterancak bu, Git'e, o sırada kontrol edilen şube ile entegre olması için yerel şubenin "kökeni / efendisi" ni düzenlemesini söyler. Bu seçenek kullanımdan kaldırılmıştır; yeni kullan --set-upstream-to (kısa ve tatlı ile -u) seçeneği yerine.

Yerel olduğunu söyle foo Şube ve şubeye aynı isimle yaklaşmasını isteyin. Bunun gerçekleşmesi

$ git branch foo
$ git branch --set-upstream-to=origin/foo

ya da sadece

$ git branch --set-upstream-to=origin/foo foo

130
2017-10-02 16:24



Bu çok daha iyi bir çözüm imo - Nils_e


Bulabilirsiniz git_remote_branch aracı faydalıdır. Uzak şubeleri oluşturmak, yayınlamak, silmek, izlemek ve yeniden adlandırmak için basit komutlar sunar. Güzel bir özellik, grb Hangi komutların çalışacağını açıklamak için komut.

grb explain create my_branch github
# git_remote_branch version 0.3.0

# List of operations to do to create a new remote branch and track it locally:
git push github master:refs/heads/my_branch
git fetch github
git branch --track my_branch github/my_branch
git checkout my_branch

51
2018-02-06 17:11



olduğu grb standart bir komut? Hangi pakette mevcut? - Jaseem
grb açıklandığı gibi erişilebilen bir yakut gemisidir onların github - mcabrams
OP, Git'in kendisi hakkında soru soruyor. Yani yeni bir araç tanıtmayın muhtemelen daha iyi olur. - zeekvfu
grb benim macOS kurulumunda git-rebase için bir takma addır. Ben yapmadım :) - highmaintenance


Aslında işe kabul edilen cevap için:

git remote add upstream <remote-url>
git fetch upstream
git branch -f --track qa upstream/qa
# OR:
git branch --set-upstream qa upstream/qa

49
2017-11-23 12:08



Yerel şube zaten bir şubeyi takip ediyordu, bu yüzden uzak repo'nun zaten eklendiğini varsayabiliriz. - Doppelganger
Dopplerganger: joachim'in yorumunu kabul edilen cevaba göre görün. Her neyse, varsayımlar kolayca farklıdır - şeyleri bu kadar ilginç kılan şey;) - Hedgehog


Git 1.5.x'te yerel bir şube kurabileceğine inanıyorum. $BRANCH uzak şubeyi takip et origin/$BRANCH, bunun gibi.

Verilen $BRANCH ve origin/$BRANCH var ve şu anda kontrol edilmediniz $BRANCH (eğer varsa), yap:

git branch -f --track $BRANCH origin/$BRANCH

Bu yeniden yaratıyor $BRANCH bir izleme dalı olarak. -f yaratılmasına rağmen zorlar $BRANCH zaten mevcut. --track normal varsayılanlar varsa (isteğe göre git-config parametresi) isteğe bağlıdır branch.autosetupmerge doğru).

Not, eğer origin/$BRANCH henüz mevcut değil, yerel iterek bunu yaratabilirsiniz $BRANCH ile uzak depoya:

git push origin $BRANCH

Yerel şubeyi bir izleme dalına tanıtmak için önceki komut tarafından takip edildi.


40
2017-07-28 09:33



git push origin $BRANCH aradığım şeydi. - User
Yukarıda açıklandığı gibi bir upstream kurmak da dahil olmak üzere, her türlü çözüm denedikten sonra, hiçbir şey çalıştı. Tek yapmak istediğim, uzak şubemden yerel şubemde 1 yeni işlem başlattı ve başlangıçta izleme ayarlamamıştım. Komuta git branch -f --track $BRANCH origin/$BRANCH hile yapar. - DemitryT


1- Yerel meta verilerinizi aşağıdakileri kullanarak güncelleyin: git getir -

enter image description here

2- uzak ve yerel şubelerinizi aşağıdakileri kullanarak gösterin: git dalı -a , aşağıdaki ekran görüntüsüne bakın

enter image description here

3- Uzaktan kumandayı bağlamak istediğiniz hedef şubeye geçin:

git checkout branchName

örnek :

enter image description here 

4- Yerel şubenizi aşağıdakileri kullanarak bir uzak şubeye bağlayın:

git dalı --set-upstream-to nameOfRemoteBranch

NB: nameOfRemoteBranch : Adım 2 "git branch -r" çıktısından kopyalamak için

Kullanım örneği:

enter image description here


28
2018-06-06 14:21



İşe yaradı. teşekkür ederim - Rahal Kanishka
Çoğunlukla kolay ve basit cevap. - vibs2006


Çalıştığından emin ol:

git config push.default tracking

özgürlüğü zorlayabilmek


22
2017-08-29 21:38



Bu uygun olabilir. Bununla birlikte, şunu dikkate alabiliriz: git-config(1) manuel sayfa tracking kullanımdan eşanlamlı upstream. - FooF


kurgu .git/config Muhtemelen en kolay ve hızlı yoldur. Yine de uzak şubeleri ele almak için Git komutları böyle yapıyor.

Dosyayla el ile uğraşmak istemiyorsanız (ve yapmak o kadar da zor değil), her zaman kullanabilirsiniz git config Bunu yapmak için ... ama yine, bu sadece düzenleyecek .git/config Her neyse, dosya.

Elbette, kullanırken uzak bir dalı otomatik olarak izleme yolları vardır. git checkout ( --track örneğin, bayrak), ancak bu komutlar ile çalışır yeni dallar, mevcut olmayanlar.


21
2018-02-06 15:17





Çok kısa

git branch --set-upstream yourLocalBranchName origin/develop

Bu sizin yourLocalBranchName denilen uzak şubeyi takip et develop.


16
2017-10-09 07:19



@Quincy Check Greg'in cevabı - kullan git push -u origin branch (veya --set-upstream-to) yerine - Tobias Kienzler
@MadNik, arasındaki fark nedir --set-upstream ve --track? Neden birini diğerinden kullanmalıyım anlamıyorum. - A-B-B


1.6.x için kullanılarak yapılabilir git_remote_branch aracı:

grb track foo upstream

Bu Git'in yapmasına sebep olacak foo Izlemek upstream/foo.


14
2018-06-01 02:23