SourceTree'de aktarmaya çalışırken "etiket zaten mevcut olduğundan güncellemeler reddedildi"


119

Kaynak Ağacı aracılığıyla İtmeye çalışırken aşağıdaki hatayı alıyorum:

git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree push -v --tags origin refs/heads/master:refs/heads/master 
Pushing to https://user@github.com/repo.git
To https://user@github.com/repo.git
 = [up to date]      master -> master
...
 ! [rejected]        example_tag -> example_tag (already exists)
updating local tracking ref 'refs/remotes/origin/master'
error: failed to push some refs to 'https://user@github.com/repo.git'
hint: Updates were rejected because the tag already exists in the remote.
Completed with errors, see above

Bildiğim kadarıyla bu etikette herhangi bir değişiklik yapmadım. Bunu nasıl düzeltebilirim?

Yanıtlar:


230

Bunu git bash'da da çözebilmelisiniz (Kaynak Ağacı Kullanıcı Arayüzünde "Terminal" düğmesine tıklayın). Tür:

git pull --tags

3
Bunun en az direniş yolu olduğu için en iyi cevap olduğunu düşünüyorum.
Chad

40
Bir çatışma git pull --tags -fdurumunda, yerel olarak sahip olduklarınızın üzerine yazmak için yapabilirsiniz
DenLilleMand

2
SourceTree'de, Getir'i tıklayın ve "tüm etiketleri getir" i etkinleştirin. Bu olur.
darkgaze

118

Saklamak istediğiniz etikette herhangi bir yerel değişiklik yapmadıysanız , zaten mevcut olduğu için reddedilen etiketi kaldırabilirsiniz ( example_tagbu durumda):

  1. Etiketi sağ tıklayın ve (mutlaka onu silmeyi tercih işaretini tüm uzaktan kumanda dan Kaldır etiketi onay kutusunu).
  2. Seç getir seçeneğini (yerel gelmez Getir ve tüm etiketleri saklamak değil etkin olması gerekir).
  3. Artık sadece geri silindiğini etiketi olmalıdır ve teşebbüs itin artık bu hata mesajı gösterecektir.

Bunun SourceTree'de yaygın olmasının nedeni, Tüm etiketleri it seçeneğinin varsayılan olarak açık olarak ayarlanmasıdır . (Bu hatayı gizlemenin başka bir yolu, bu seçeneğin işaretini kaldırmaktır.)


"Tüm etiketleri yerel olarak getir ve depolamanın etkinleştirilmesi gerekmiyor" benim için bunu yaptı ve sorunun kendisini tekrar etmesine neden olup olmadığını kontrol ettim.
Tom

Upstream (kaynak) repo'sunun gerçeğin kaynağı olduğunu varsayarsak, bu çözüm en az yıkıcıdır ve sorunu anında çözer.
Steve Henty

Ne yazık ki 15 reddedilmiş etiketiniz olduğunda 1,2 ve 3 adımları çok sıkıcı olabilir. Evet, "Tüm etiketleri it" seçeneğini devre dışı bırakmak muhtemelen doğru yoldur.
SagiSergeNadir

27

push all tagsGit push'unuzu onayladığınızda kullanıcı arayüzünün altındaki işareti kaldırın .


Şunu mu demek istediniz push all tags?
Wodin

Harika! Gözlemlemedim. Teşekkürler
Meg-90

@Wodin, eğer UI'de kontrol ederseniz push all tags, önceki etiketlerin üzerine yazmaya çalışacaktır. ancak üzerine yazmayı önlemek için
DENETİMİ KALDIRMALISINIZ

@ JDev-Guns Ben sadece ifadeleri sorguluyordum. Başlangıçta söyledin push all TABs. SourceTree'ye aşina değilim, ama TAGsbunun yerine kastettiğinden şüphelendim TABs.
Wodin

@Wodin oh anladın! Sanırım söyledim TAGsama yapmadıysam demek TABs
istedim


14

Basarken "Tüm etiketleri it" düğmesinin işaretini kaldırdığınızdan emin olun.

görüntü açıklamasını buraya girin


Yukarıda belirtildiği gibi, yerel olarak yeni bir etiket eklediyseniz bu, uzaktan kumandaya gönderilmediği anlamına gelmez mi?
bytedev

0

Evet, gerçekten de etiketleri sizden önce çekin push --tags. Sorunumu çözdüm.


-1

SourceTree'deki sorunu şu şekilde çözüyorum :

  1. "Etiketi tüm uzaktan kumandalardan kaldır" seçimi ile etiketi silme
  2. Etiketi yeniden oluşturma
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.