Hangi dalla birleşmek istediğini söylemeden çekmemi istedin


125

TL; DR: Çekemediğim "paletli" bir dalım var.

İşte burada "kova-4" içindeyim:

$ git branch -v
  bucket-1       410f7b5 * gh-53 * gh-48 * "Share App"
  bucket-2       7ed70a2 * upgrade to SOLR 3.3.0
  bucket-3       400ffe4 * emergency fix prod issue
* bucket-4       64c2414 Merge branch 'bucket-3' into bucket-4
  master         8dc4854 [ahead 1] * gh-73

Uzaktan kumandamdan değişiklikleri almak istiyorum:

$ git pull

You asked me to pull without telling me which branch you
want to merge with, and 'branch.bucket-4.merge' in
your configuration file does not tell me, either. Please
specify which branch you want to use on the command line and
try again (e.g. 'git pull <repository> <refspec>').
See git-pull(1) for details.

If you often merge with the same branch, you may want to
use something like the following in your configuration file:

    [branch "bucket-4"]
    remote = <nickname>
    merge = <remote-ref>

    [remote "<nickname>"]
    url = <url>
    fetch = <refspec>

See git-config(1) for details.

Hmm, garip, "kova-4" ü bir izleme dalı olarak eklediğimi sanıyordum. Bakalım:

$ git remote show origin
* remote origin
  Fetch URL: git@github.com:abcd/main.git
  Push  URL: git@github.com:abcd/main.git
  HEAD branch (remote HEAD is ambiguous, may be one of the following):
    bucket-3
    master
  Remote branches:
    bucket-1       tracked
    bucket-2       tracked
    bucket-3       tracked
    bucket-4       tracked
    master         tracked
  Local branches configured for 'git pull':
    bucket-1       merges with remote bucket-1
    bucket-2       merges with remote bucket-2
    bucket-3       merges with remote bucket-3
    master         merges with remote master
  Local refs configured for 'git push':
    bucket-1       pushes to bucket-1       (up to date)
    bucket-2       pushes to bucket-2       (up to date)
    bucket-3       pushes to bucket-3       (up to date)
    bucket-4       pushes to bucket-4       (local out of date)
    master         pushes to master         (fast-forwardable)

Aslında, kova-4 "izlendi" olarak işaretlenmiştir, ancak bir şekilde itme için yapılandırılmıştır, ancak çekme için yapılandırılmıştır.

Dosyama baktığımda, .git/configşubelerimin çoğu için "uzak" ve "birleştirme" girişlerim olduğunu, ancak kova-4 için olmadığını görüyorum. Bu olmadan nasıl "izlenmiş" olarak kabul edilir?

[remote "origin"]
    url = git@github.com:abcd/main.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[branch "rel-2011-07-07"]
    remote = origin
    merge = refs/heads/rel-2011-07-07
[branch "bucket-1"]
    remote = origin
    merge = refs/heads/bucket-1
[branch "bucket-2"]
    remote = origin
    merge = refs/heads/bucket-2
[branch]
    autosetupmerge = true
[branch "bucket-3"]
    remote = origin
    merge = refs/heads/bucket-3

Görüyorum ki buradaki olası çözüm remote/mergeyapılandırma dosyamda paket-4 için girişler eklemek . Ama bu olmadan nasıl "izlenebilir" kabul edilir? kova-4 yerel olarak oluşturuldu, sonra bu depodan sunucuya aktarıldı, bu yüzden bir şekilde bu şube için izlemeyi düzgün kurmadığımdan şüpheleniyorum.

Gelecekte tüm yerel şubelerin uzaktan kumandalarını düzgün bir şekilde izlemesini sağlamak için ekleyebileceğim bir yapılandırma var mı?


2
Bu soru beni doğru yönde gösterdi, çekmeye çalıştığım dal için .git / config dosyama bir giriş eklemem gerekiyordu, sonra iyi çalıştı.
Bay Bungle

Aynen öyle, ve bunu yapmanın yolu, Mark Longair'in git dalı ile aşağıda tarif ettiği gibi - set-upstream kova-4 origin / kova-4
Jonathon Horsman

Yanıtlar:


191

Sadece bucket-4 pushes to bucket-4bir dalı iterken varsayılanın onu uzaktan kumandada eşleşen bir ada sahip birine itmek olduğu için diyor . ( Yerel şube bir uzaktan izleme şubesini izliyor ve uzaktan izleme dalı uzak depodaki farklı bir ada sahip bir şubeye karşılık gelse bile , bunun hala varsayılan olduğunu unutmayın .)

İle arasındaki ilişkiyi kurmak için en basit yolu bucket-4ve bucket-4içinde originemin itmek dahaki sefer yapmak yapmaktır:

git push -u origin bucket-4

Alternatif olarak şunları yapabilirsiniz:

git branch --set-upstream-to origin/bucket-4

Birkaç sorunuzu doğrudan yanıtlamak için:

Bu olmadan nasıl "izlenmiş" olarak kabul edilir?

Bu durumda değil - hayır varsa herhangi bir anlamda uzaktan izleme dalı izleme değil branch.bucket-4.mergeya branch.bucket-4.remoteda git config. Gelen çıktı git remote show originsadece dalın varsayılan olarak nereye itileceğini gösterir.

Gelecekte tüm yerel şubelerin uzaktan kumandalarını düzgün bir şekilde izlemesini sağlamak için ekleyebileceğim bir yapılandırma var mı?

Var olduğunu sanmıyorum. bucket-4Yerel olarak oluşturduğunuzda , olduğunu varsaydığım gibi, uzaktan izleme dalı yoktu, bu yüzden o noktada kurulamaz - bu çok kafa karıştırıcı varsayılan davranış olurdu. Sadece yukarı akış havuzuna o şubeden -uilkini eklemeyi hatırlamanız gerekir git push.

Umarım bu biraz yardımcı olur.


7
git branch --set-upstreamçekme yapmadan önce benim için mükemmel çalıştı
ohaal

git şube - set-upstream kova-4 orijin / kova-4 benim için çalıştı :-)
Aliza

Ya itmek istemiyorsan? Bende de aynı sorun var ama bu sorunun ortaya çıktığı depodan itmek istemiyorum. Uzak orijinleri değiştirdim ve görünüşe göre artık izlenmeyen dal için en son HEAD'i aşağı çekmek istiyorum (uzak orijini değiştirmeden önce izlenmiş olmasına rağmen). Sonunda sorunlu klonu sildim ve yeni kaynaktan yeniden klonladım.
geoidesic

1
Aslında çalışırken git --set-upstream <branch> origin/<branch>, bayrak kullanımdan kaldırıldığı için bir hata alıyorsunuz. Önerilen ikinci cevap olarak git branch --track origin/<branch>veya kullanılması tavsiye edilir --set-upstream-to. Sanırım cevap güncellenebilir, @MarkLongair?
AymDev

Öneriniz için teşekkürler, @AymDev - Bu değişikliği ben yaptım.
Mark Longair

6

git branch --set-upstream <branch> origin/<branch> 1.8.2.3 (benim sürümüm) itibariyle kullanımdan kaldırıldı.

git branch --set-upstream-to=origin/<branch> <branch>Bunun yerine kullanın .


2
Bunun Mark'ın cevabına bir yorum olmasını mı istediniz ? Ayrıca, aslında Git 1.8.0 sürümünde kullanımdan kaldırıldı .
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.