Git: şube için varsayılan yapılandırılmış uzaktan kumanda hangisidir?


192

Uzak çıplak bir depom var hub. Sadece masterşubede çalışıyorum. Aşağıdaki bu hata mesajının son cümlesi beni meraklandırıyor: "Geçerli dalınız için varsayılan yapılandırılmış uzaktan kumanda" hangisinin olduğunu nasıl öğrenebilirim ? Nasıl ayarlayabilirim?

[myserver]~/progs $ git remote -v
hub     ~/sitehub/progs.git/ (fetch)
hub     ~/sitehub/progs.git/ (push)

[myserver]~/progs $ git branch -r
  hub/master

[myserver]~/progs $ cat .git/HEAD
ref: refs/heads/master

[myserver]~/progs $ git pull hub
You asked to pull from the remote 'hub', but did not specify
a branch. Because this is not the default configured remote
for your current branch, you must specify a branch on the command line.

Yanıtlar:


230

Uzak dalı izleme

Git-şubesinin iz seçeneğini kullanarak itme ve çekme için varsayılan uzak depoyu belirleyebilirsiniz. Bunu normalde yerel ana dalınızı oluştururken --track seçeneğini belirterek yaparsınız, ancak zaten var olduğu için yapılandırmayı şu şekilde manuel olarak güncelleyeceğiz:

Düzenleyin .git/config

[branch "master"]
  remote = origin
  merge = refs/heads/master

Artık git push ve git pull komutlarını kullanabilirsiniz.

[ kaynak ]


OP yapsaydı bu ayarlanmaz mı git pull hub master?
Ryan Bigg

@Ryan Bigg: Otomatik olarak değil, her zaman yapılandırmanızı bozarsınız.
dürtmek

36
Bu nedenle git komutları varken neden bir yapılandırma dosyasını düzenleyesiniz?
urschrei

43
git branch - set-upstream local_branch remote / remote_branch (veya aşağıda açıklandığı gibi iterken)
urschrei

25
@scragz: Olmaz! komut yaklaşımı .gitconfig'inizin anlamlı bir durumda kalmasını garanti eder.
smci

260

Daha basit bir şekilde yapabilirsiniz, .gitconfiganlamlı bir durumda kalmanızı garanti eder :

Git sürüm v1.8.0 ve üzerini kullanma

git push -u hub master iterken veya:
git branch -u hub/master

VEYA

(Bu uzaktan koyacaktır şu anda denetleniyor aşımı dalı için hub/master)
git branch --set-upstream-to hub/master

VEYA

(Bu adlandırılmış şube için uzaktan koyacaktır branch_nameiçin hub/master)
git branch branch_name --set-upstream-to hub/master

v1.7.xVeya daha eski bir sürümü kullanıyorsanız

kullanmalısın --set-upstream:
git branch --set-upstream master hub/master


3
Merak eden herkes için: İkinci komut mevcut şubeler için kullanılabilir
Eric Hu

1
@ eric-hu cevabımı burada ayrıntılı olarak
açıkladı

1
set-upstream[-to]Komut değiştirir anda yapılandırılmış uzaktan. Orijinal poster, varsayılan yapılandırılmış uzaktan kumanda hakkında sorular sordu . Elbette bu aynı kavram değil mi?
Steve Pitchers

1
Her dal bir sahiptir , şu anda uzaktan yapılandırılmış belirterek yerel şube bu uzak tekabül hangi dal. Varsayılan uzaktan konfigüre şube itilmiş veya açıkça birini belirtmek yoksa çekilir belirler. Bu cevap sadece mevcut cevabı ayarlar . Kabul edilen cevap (elle düzenleme) ayrıca varsayılan cevabı ayarlamanızı sağlar . Elle düzenleme yapmaktan kaçınan bir komut bilen var mı?
Steve Pitchers

1
--set-upstream-totam olarak aynı değişiklikleri yapılmış .git/config@scragz önerildiği üzere onun cevabını .
strah


-1

dal için etkili bir uzaktan kumanda alma komutu, örn., master:

git config branch.master.pushRemote || git config remote.pushDefault || git config branch.master.remote

Nedeni ("man git config" çıktısından):

branch.name.remote [...] git fetch ve git push komutlarına [...] [push için] getirilecek uzaktan kumandanın remote.pushDefault (tüm dallar için) [ve] ile geçersiz kılınabileceğini bildirir . geçerli şube [..] branch.name.pushRemote [...] tarafından geçersiz kılındı

Herhangi bir nedenle, "man git push" sadece branch.name.remote hakkında bilgi verir (üçün en az önceliğine sahip olmasına rağmen) + yanlışlıkla ayarlanmadıysa, varsayılan olarak başlangıç ​​noktasına itilir - değil, sadece bir kopyayı kopyaladığınızda, branch.name.remote başlangıç ​​konumuna ayarlanır, ancak bu ayarı kaldırırsanız, başlangıç ​​uzaklığına sahip olsanız bile git push başarısız olur.


Bu soru daha faydalı bir cevapla zaten cevaplandı.
Austin Schäfer
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.