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.