Git: uzak şube bilgilerini güncelleme


125

Git deposunda, izlemediğim bir uzak dal silindi. Yazdığımda

git branch -r

silinen şube hala görünüyor (ve kontrol edebilirim)

Bu bilgiyi güncellemek için hangi git komutunu çalıştırmam gerekiyor?

Yanıtlar:


39

Gibi bir şey yaparsan

git branch -d -r remote_name/branch_name

yalnızca yerel ödemenizi kaldırırsınız. Bu komut uzak depoya hiçbir şey yapmaz, bu yüzden hala görünür.

Çözüm:

git push origin :branch_name

uzak dalı kaldırır (':' notuna dikkat edin) ve

git branch -d branch_name

yerel ödemenizi kaldıracak.

( Referans )


146
Ayrıca uzak referanslarınızı temizlemek için 'git remote prune origin'i çalıştırabilirsiniz.
cmcginty

3
Bu, artık uzak depo tarafından izlenmeyen tüm dalları kaldıracaktır. Bu yüzden dikkatli olun.
Garrett Hyde

4
Biraz daha ayrıntılı olsa da, git push <remote> --delete <branchname>uzak dalları silmek için de kullanabileceğinizi bilmenin de yararlı olduğunu düşünüyorum .
AeroCross

Bu genellikle işe yarar, ancak bugün uzak listenin güncellenmediği bir durumla karşılaşıyorum, bu yüzden orada olmayan bir dalı silmeye çalışıyordum. Bu nedenle @ Flo'nun aşağıdaki çözümü önce gerekliydi.
dgo

284

Uzak depodaki şubeler silinmişse ve tüm yerel uzaktan izleme şubelerini aynı anda güncellemek istiyorsanız,

$ git remote prune <remotename>

belirli bir uzaktaki tüm eski uzaktan izleme dallarını silmek için (yani, uzak depodan kaldırılan dalları izleyenler).

git remoteBelgelere bakın .


Cevaplarınız için @ Casey ve @Jakub'a teşekkür ederim! Nasıl oluyor da yerel olarak depolanan uzak şube bilgileri bir dahaki sefer kullandığımda güncellenmiyor git fetch?
JJD

4
@JJD: Çünkü çalışmanızı artık burada olmayan uzak şubeye dayandırmış olabilirsiniz. Bu nedenle, talep edilmeden ortadan kaybolması kötü bir fikir olarak düşünüldü. Bu nedenle, uzaktan izleme dallarını açık bir şekilde budanmanız gerekir.
Jakub Narębski

"Git gc" eski uzak dalları da temizliyor mu?
James Wald

@JamesWald: Hayır, değil. git gcsadece nesneleri ve referansları paketler ve referans alınmayan nesneleri oradayken siler (bir miktar güvenlik marjı ile).
Jakub Narębski

186
git remote update --prune

Tüm uzaktan kumandaların şubelerini yenilemeli, yenilerini eklemeli ve kaldırılanları silmeli.

Düzenle: Uzaktan güncelleme komutu temel olarak uzaktan kumandadaki dalların listesini getirir. Bu --pruneseçenek, artık uzaktan kumandada bulunmayan şubeleri gösteren yerel uzaktan izleme dallarınızdan kurtulacaktır .


Bu benim için çalıştı. Her zamanki 'git push kaynağı: <branch_name>'
n0denine

Bu cevabın Jakub Narębski'nin cevabını ve daha fazlasını yaptığını söylemek doğru olur mu? Yani, eritiyor ve güncellemeleri getiriyor mu?
Frank Tan

14

Yeni uzak dalları görmek için de yararlıdır:

git fetch --all

Bu bana çok yardımcı oldu. Visual studio git'teki bazı hatalar, klonlamadan sonra oluşturulan yeni dalları göstermeyi engelliyor. Bu komut yeni şubeleri göstermeye yardımcı olur
Venkatesh Muniyandi

güzel n basit thx dostum, evde bronz bir cevap rozeti var :)
danday74

2

Uzak dalları silmek için -rve -dbayraklarını birleştirebilirsiniz .


harika ipucu! ancak, bu durumda, zaten silinmiş birkaç dal var, bu güncellemeleri almak için kesinlikle bir komut var
Bain Markev

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.