Soru ölümcül: Şu andaki şubenizin giriş bölgesi mevcut şubenizin adıyla eşleşmiyor


Uzak şubeden bir ödeme yaptıktan sonra releases/rel_5.4.1 Git GUI kullanarak, denediğimde bu beklenmeyen hata iletisini görüyorum push:

fatal: The upstream branch of your current branch does not match
the name of your current branch.  To push to the upstream branch
on the remote, use

    git push origin HEAD:releases/rel_5.4.1

To push to the branch of the same name on the remote, use

    git push origin rel_5.4.1

Git'in neden bahsettiğini bilmiyorum. Muhtemelen zorlamak istiyorum origin releases/rel_5.4.1 çünkü kontrol ettiğim şube. Yani, iki seçenek de bana uygun değil.

git status dalda olduğumu söylüyor rel_5.4.1.

İşte benim şubemde göründüğü gibi .git/config:

[branch "rel_5.4.1"]
    remote = origin
    merge = refs/heads/releases/rel_5.4.1

Ne oluyor?


31
2017-07-21 12:05


Menşei


Git hangi sürümünü kullanıyorsunuz (ayrıca hangi platformda)? - R0MANARMY


Cevaplar:


Muhtemelen en önemli detayı kaçırabilecek okuyucuların yararına, yorumlarda saklı:

Bu nedeniyle git config push.default ayarı.  Neyi tanımlar git girdiğinde yapar git push (bağlantıya bakın).

Soruda, ayarın simple (bunun için varsayılan olan git v2), muhtemelen

git config --global push.default simple

Bu şu demek git Yerel ve uzak şube tam olarak eşleşmediğinde itmeyi reddeder. İzleme dalına itmek için Yapmak git pull ve git push simetrik, kullan

git config --global push.default upstream

Not: Ayrılmak --global Sadece geçerli (yerel) ayarını değiştirmek için git deposu.


37
2018-03-07 07:31



Referans ettiğim yorumlar @ Tom-Spurling ve Jacob-Ford'dan - Tino
Bunun en iyi cevap olması gerektiğine inanıyorum! çünkü itiraf ettiğim her zaman izleme dalından bahsetmek istemiyorum. - basslo
Aradığım şey buydu. +1. Teşekkür ederim. - Felipe Alvarez
Bu bir dipnot olarak kesinlikle geçerlidir, ancak bu özel soru çoğunlukla eşleşmeyen bir şube adıyla sonuçlanmaktan çıkmış gibi görünüyordu ... bu yüzden bu daha iyi bir cevap olmayabilir bu soru için, kasten farklı bir branş ismine sahip olduğunda, bu hata mesajını arayarak burada olmanın gerçekten muhtemel olmasına rağmen. İdeal bir cevabın her iki noktadan da bahsedeceğini varsayalım! (?) - Tom Spurling


Yerel şubeniz denir rel_5.4.1 ama uzak şube releases/rel_5.4.1 (Git söz konusu olduğunda, / branşlarda insan gözü için daha kolay okunması dışında özel bir anlamı yoktur).

İttirdiğinizde, Git dalınızı releases/rel_5.4.1 (uzak şubenin adı) veya yeni bir uzak şube oluşturmak isteyip istemediğinizi belirtin. Yine de, isimlerin benzerliğini fark eder.

Yeni bir şube oluşturmak istemediğiniz sürece, doğru komut

git push origin HEAD:releases/rel_5.4.1

Ayrıca kullanabilirsiniz

git push origin rel_5.4.1:releases/rel_5.4.1

Uyarıyı bir kez ve tümüyle düzeltmek için, yerel şubenizi uzak adla eşleşecek şekilde yeniden adlandırın:

git branch -m releases/rel_5.4.1

30
2017-07-21 13:01



İyi cevap, özellikle son sonuç. Aynı şube adına sahip iki veya daha fazla farklı akış ile çalışmadığınız sürece, farklı adların yerel olarak ve uzaktan IMO nedenleri nadirdir. Ancak bu durumda, itme hedefini komut üzerinde elle yazmak daha fazla hissetmemi sağlıyor kasa bazı otomagic solüsyon kullanmaktan - hek2mgl
Şube isimlerinin her iki tarafın da aynı kalması için genel olarak en adil ve en azından kafa karıştırıcı olduğu sonucuna katılıyorum. Git ayrıca kabul eder; push.default yapılandırmada basitBu akıl yürütmeyi güçlendirir. Man sayfasından: "basit - merkezi iş akışında, iş gibi akıntıya karşı Yukarı akış şubesinin adı yerel olandan farklıysa, itmeyi reddetmek için ek bir güvenlik ile. "Aynı temel davranışı (varsayılan olarak yalnızca geçerli şubemi varsayılan olarak itin) bu onay olmadan isterseniz, repo için yapılandırmayı değiştirin: git config push.default upstream - Tom Spurling
Şube kullanarak ödeme yaparsam git checkout -b branchname --track origin/releases/branchname Git'e upstream dalının adını söyleme zorunluluğunu aldım ve onu takip etmesini istedim. Sihirli eşleştirme gerekli değil, tehlike yok, bu dal için ne istediğimi söyledim - ama yine de bu hatayı artırıyor. İzleme neden 'çek' değil 'itme' için geçerli? - Ed Randall
> Git söz konusu olduğunda, insan gözü için daha kolay okunması dışında, şube adlarında özel bir anlamı yoktur.  Doğru değil, şunu deneyin: git branch test-bname; git branch test-bname/with-slash - qonf
Burada bir şeyi kaçırıyor olmalıyım. Yerel ve uzak şube aynı ada sahipse, bağlı ağaçlara bakarken bunları nasıl ayırt edebilirim? Örneğin git log --graph --full-history --all --color --pretty=format:"%x1b[31m%h%x09%x1b[32m%d%x1b[0m%x20%s" - Dave B


Bu hata bir kez ve tümü ile düzeltilebilir:

git branch releases/rel_5.4.1 -u origin/releases/rel_5.4.1

Doğru uzaklığa (tekrar) uymak için, şubenin akış yönüne göre değişir.


16
2018-03-29 10:18



Varsayılan olarak, git config push.default ayarlandı simpleBu, uzaktaki şubenin lokal olarak ayarlanmış olsa bile, uzak şubenin yerel şubenin adıyla uyuşmaması durumunda asla mutlu olmayacaktır. Ayar git config push.default upstream bu hataları bastırır. - Jacob Ford
@ JacobFord'un yorumunun not edilmesi çok önemlidir. Bildiğim kadarıyla, yerel şubenizi yeniden adlandırmak zorunda kalmadan bununla başa çıkmanın tek yolu budur. - prasanthv
Teşekkürler! Tam da ihtiyacım olan şey buydu, yine de neden kafam karıştı? git remote set-branch origin releases/rel_5.4.1 sorunu çözmez ... - patapouf_ai
Sadece varsayılan itme davranışı çünkü ("simple") son derece" güvenli "olmaya çalışır - bu yüzden sadece tek bir şube iter ve eğer sadece yukarı doğru şube adı aynı ise (çünkü kazara farklı bir akış yönüne ayarlanmış olabilirsiniz) (sanırım).upstream"I ve @JacobFord'un bahsettiği gibi, bu ekstra" güvenlik "olmaksızın eşdeğerdir (tek geçerli dalı açar) (tüm isimleri kontrol ederek). push.default Kılavuzun bölümü (man git-config). - Tom Spurling


Benim durumumda git branch --unset-upstream Bu sorunu çözdü.


4
2018-01-17 10:34



Bu, bir dalı yeniden adlandırdığınızda karşılaştığınız durumda daha doğrudur. git branch -m newbranch, bir upstream seti vardı ve git itme girişiminde bulundu. bu durumda git branch --unset-upstream ve sonra yap git push ve git sana söyleyecek fatal: The current branch newbranch has no upstream branch. To push the current branch and set the remote as upstream, use git push --set-upstream origin newbranch - harschware
Evet, bu komutla daha sonra hiç sorunum olmadı. - gpap


Uzaktan kumandadan farklı bir yerel şube ismine sahip gibi görünmüyor Git çok sever. Sorun çıkarmanız gerekecek:

git push origin HEAD:releases/rel_5.4.1

her basımda açıkça


0
2017-07-21 12:07



değil releases/ şube adının bir parçası? - Aaron Digulla
Oh evet. Bunu gözden kaçırdım. İle başlamalıdır releases/. Git hata mesajının yanıltıcı olduğunu düşünüyor. (Şimdi sorum var) - hek2mgl
Teşekkürler. Önceki komut bir şube oluşturdu rel_5.4.1 uzaktaki repoda. Onu sildim git branch -D rel_5.4.1. Bu doğru mu? - Aaron Digulla
:-( error: src refspec releases/rel_5.4.1 does not match any. Şimdi ne yapıyor? - Aaron Digulla
Evet, bu şubeyi yerel olarak silen ilk adım. Bir sonraki adım git push --delete origin rel_5.4.1Şube uzaktan silecek .. - hek2mgl