git checkout etiketi, git çekme dalda başarısız oluyor


133

Bir git deposunu klonladım ve ardından bir etiketi kontrol ettim:

# git checkout 2.4.33 -b my_branch

Sorun değil, ama git pullşubemde çalışmayı denediğimde git şu hatayı veriyor :

Mevcut şubeye ait takip bilgisi yok. Lütfen hangi şubeyle birleştirmek istediğinizi belirtin. Ayrıntılar için git-pull (1) bakın

git pull <remote> <branch>

Bu şube için izleme bilgisi ayarlamak isterseniz, bunu aşağıdakilerle yapabilirsiniz:

git branch --set-upstream new origin/<branch>

İstediğim git pullyalnızca ana dal güncellemek ve (bir etiket zaten var) yalnız benim şimdiki şube bırakmak. Böyle bir şey mümkün mü?

Buna ihtiyacımın nedeni, git her zaman depoyu çeken ve elbette yukarıdaki hata nedeniyle başarısız olan otomatik bir komut dosyam olması.


Olası git çekme
daisy

Yanıtlar:


114

Düzenleme: Git'in daha yeni sürümleri --set-upstream masteriçin kullanımdan kaldırıldı, --set-upstream-tobunun yerine şunu kullanmalısınız :

git branch --set-upstream-to=origin/master master

İstendiği gibi, şunu çalıştırabilirsiniz:

git branch --set-upstream master origin/master

Bundan sonra, git pullkodunuzu güncellemek için çalıştırabilirsiniz .


5
Bu sorunu çözdü. Ama yine de ana şubemin menşe referansını nasıl kaybettiğini anlamam gerekiyor. Bir daldaydım ve yaptım git checkout master. Yapamadım git pullçünkü menşe referansı kayboldu. Şimdi çalışıyor. Teşekkür ederim!
Ariel

'git branch --set-upstream-to = origin / master master my_branch' benim için çalıştı
Blue Clouds

90

Aynı sorunu yaşadım ve bu komutla düzelttim:

$ git push -u origin master

Yardım dosyasından -u temelde çekimler için varsayılanı ayarlar:

-u, --set-upstream`

  For every branch that is up to date or successfully pushed, add 
  upstream (tracking) reference, used by argument-less git-pull(1) and
  other commands. For more information, see branch.<name>.merge in 
  git-config(1).

48

Şu komutları deneyin:

git pull origin master
git push -u origin master

9

Kullanarak ana dala geri dönün

$ git checkout master

ve sonra git pulloperasyonu çalıştırın

$ git pull origin/master

Daha sonra, kendi başınıza geri dönebilirsiniz my_branch.


6
Ben de tam olarak bundan kaçınmaya çalışıyorum. Bunu yapmanın "resmi" bir yolu olup olmadığını bilmek istedim.
alesko

5

@alesko : Sadece şubeyi güncellemek için sadece git pullödeme yaptıktan sonra yapmak mümkün değildir . Çünkü aynı zamanda birleşecek akım için senaryoda> - şubemy_branchmaster
git pullmy_branch

@Simon : bu da itici bir etki yapacak. Neden?

$ git branch -u origin/master
Branch master set up to track remote branch master from origin.

ve belgelere göre:

-u <upstream>
  Set up <branchname>'s tracking information so <upstream> is considered  
  <branchname>'s upstream branch. If no <branchname> is specified,  
  then it defaults to the current branch.

4

Öncelikle doğru dalda olduğunuzdan emin olun.
Sonra (yalnızca bir kez):

git branch --track

Bundan sonra bu tekrar çalışır:

git pull

4

Birden fazla şubeniz olabilir. Ve mevcut şubeniz yukarı akışını uzaktan kurmadı.

Bunu düzeltmek için adımlar:

git checkout branch_name
git branch --set-upstream-to=origin/remote_branch_name local_branch_name

Örneğin

// this set upstream of local branch develop to remote branch  origin/develop,
git branch --set-upstream-to=origin/develop develop

Bunu yaptıktan sonra yaptığınızda git pullbelirtilen daldan çeker.


3

Hangi dalı çekmek istediğinizi belirtebilirsiniz:

git pull origin master

Ya da yerel ana şubenizin github ana şubesini bir yukarı akış olarak izleyeceği şekilde ayarlayabilirsiniz:

git branch --set-upstream-to=origin/master master
git pull

Bu şube izleme, bir depoyu klonladığınızda (yalnızca varsayılan dal için) sizin için otomatik olarak ayarlanır, ancak mevcut bir depoya bir uzaktan kumanda eklerseniz, izlemeyi kendiniz ayarlamanız gerekir. Neyse ki git tarafından verilen tavsiyeler, nasıl yapılacağını hatırlamayı oldukça kolaylaştırıyor.

--set-upstream, görünüşe göre git 1.9.x'te kullanımdan kaldırılmıştır. İleriye bakarsak, aşağıdaki gibi bir şey

git branch -u origin/master

zaten ustayı kontrol ettiğinizi varsayarsak. Değilse git branch -u origin/master masterçalışacak


2

Bunu dene

git checkout master

git pull origin master

2
Bu gerçekten soruyu yanıtlamıyor. Ayrıca kabul edilmiş bir cevap olmamasına rağmen, en çok oy alan bu eski soruya cevap olarak çok daha uygun
fejese

1

Mevcut şube için izlemenizi (yukarı akış) ayarlamanız gerekir

git branch --set-upstream master origin/master

Bunun yerine zaten kullanımdan kaldırıldı --track bayrağı

git branch --track master origin/master

Ayrıca @casey'nin dikkatini çeken belge referansını da beğendim:

-u <upstream>
  Set up <branchname>'s tracking information so <upstream> is considered  
  <branchname>'s upstream branch. If no <branchname> is specified,  
  then it defaults to the current branch.

1

Benim için işe yarayan şey şuydu: git branch --set-upstream-to = origin master Tekrar bir çekme yaptığımda sadece güncellemeleri ana bilgisayardan aldım ve uyarı gitti.


1

Benim gibi bunu her zaman yapmanız gerekiyorsa, aşağıdakileri .gitconfigdosyanıza ekleyerek bunu otomatik olarak yapacak bir takma ad ayarlayabilirsiniz :

[alias]
    set-upstream = !git branch --set-upstream-to=origin/`git symbolic-ref --short HEAD`

Mesajı gördüğünüzde There is no tracking information..., sadece koşun git set-upstream, sonra git pushtekrar.

Https://zarino.co.uk/post/git-set-upstream/ sayesinde


0

Sadece güncellemeleri indirmek için:

git fetch origin master

Ancak, bu yalnızca adlı bir referansı günceller origin/master. Yerel bilgilerinizi güncellemenin en iyi yolumaster , başka bir yorumda belirtilen ödeme / birleştirme olacaktır. Eğer yerel garanti edemez masterana gövdesinden ayrıldığı henüz origin/masterüzerinde, sen olabilir kullanmak git update-refiçin akımını haritaya masteryeni bir noktaya, ama bu düzenli olarak kullanıyor muhtemelen en iyi çözüm değil ...


0

Bu komut kullanımdan kaldırılmıştır: git branch --set-upstream master origin/master

Yani, izlemeyi kurmaya çalışırken, benim için işe yarayan komut şu:

git branch --set-upstream-to=origin/master master
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.