Git uzak dal silindi, ancak yine de 'dal -a'da görünüyor


552

Diyelim ki depomda bir şube var coolbranch.

Şimdi, (hem uzaktan hem de yerel olarak) silmeye karar verdim:

git push origin :coolbranch
git branch -D coolbranch

Harika! Şimdi şube gerçekten silinmiştir.

Ama koştuğumda

git branch -a

Hala alıyorum:

remotes/origin/coolbranch

Dikkat edilmesi gereken bir şey, yeni bir havuzu klonladığımda, her şey yolunda git branch -ave şubeyi göstermiyor.

Bilmek istiyorum - branch -ayeni bir örneği klonlamadan listeden şube silmek için bir yolu var mı?



58
Siz git fetch -p(veya git pull -p) o zaman uzak dallar budanır.
yoyo

Yanıtlar:


688

git remote prune origin, diğer cevapta önerildiği gibi, bu tür tüm eski dalları kaldıracaktır. Muhtemelen çoğu durumda bunu istersiniz, ancak bu belirli uzaktan izleme dalını kaldırmak istiyorsanız şunları yapmalısınız:

git branch -d -r origin/coolbranch

( -rUnutması kolaydır ...)

-rbu durumda " -dUzaktan izleme dallarını listeleyecek veya silecek (kullanılıyorsa )." burada bulunan Git belgelerine göre: https://git-scm.com/docs/git-branch


11
git remote prune originveya git fetch --prunebenim durumumda herhangi bir işaretleme türü benim için işe yaramadı. ... Ama git branch -d -r origin/feature/branch-nameişe yaradı. featureAd alanının (git akışı) altında olmasıyla ilgili bir şey olup olmadığından emin değilim, ancak herhangi bir Google çalışanının başlarına geldiğini bulması durumunda bu şekilde düştü.
Misterparker

8
Bunun gerekli bir nedeni var mı? Varolmayan şube adlarını listede bırakmak ve otomatik olarak budamak değil gerçekten kötü görünüyor.
akronymn

296

Deneyin:

git remote prune origin

Gönderen Git uzaktan belgeler :

kuru erik

<ad> altındaki tüm eski uzaktan izleme dallarını siler. Bu eski dallar, <ad> tarafından referans verilen uzak depodan zaten kaldırılmış, ancak yine de yerel olarak "uzaktan kumandalar / <ad>" içinde kullanılabilir.

--Dry-run seçeneğiyle, hangi dalların budanacağını bildirin, ancak aslında budanmaları bulamayın.


1
git pull --prunegit remote update --prune
Tamlık için


20

Bizim özel durumumuzda, uzak Git depomuz olarak Stash'ı kullanıyoruz. Önceki tüm cevapları denedik ve hiçbir şey işe yaramadı. Aşağıdakileri yapmak zorunda kaldık:

git branch –D branch-name (delete from local)
git push origin :branch-name (delete from remote)

Daha sonra kullanıcılar değişiklikleri almaya gittiğinde aşağıdakileri yapmaları gerekiyordu:

git fetch -p

git branch -d branch-namebenim için çalıştı. Bildirim -Diçin -d. Aslında D büyük harfiyle çalıştığımda -D
21D'de

1
"-D", itme veya birleştirme durumuna bakılmaksızın silmeyi zorlamanın bir yoludur. Açıkça kullanırken dikkatli olun, ancak birçok durumda gerekli olmuştur.
Shadowvail

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.