Visual Studio Code - VS Code'da hala gösterilen GitHub'da silinen dalları kaldırılsın mı?


93

VSCode'da, bir çekme isteği yaptıktan ve GitHub'daki dalı sildikten sonra, bu dal Visual Studio Code'da görünmeye devam ediyor. Şubeyi seçersem beklendiği gibi Hata veriyor.

Artık silinen bu dalları VSCode'dan nasıl kaldırırım - bunu otomatik olarak yapabilir miyim?


2
Takip etmek için (3 yıl sonra), benim için doğru cevap, git fetch --pruneuzak şube referanslarını güncelleme / git branch -d <branch-name>silme ve yerel şubeyi silme ( -Dzorlamak için) kombinasyonudur . VSCode'u yeniden başlat paleti yeniler
Drenai

VS Code'u yeniden başlatmanıza gerek yok, Kaynak Kontrol menüsündeki Yenile düğmesine basmanız yeterli
AS

Aslında bunu halletmek için bir işlev oluşturuyorum ve bununla ilgili küçük bir makale yazıyorum. Bağlantı
davidhu

Yanıtlar:


150

Görünüşe göre, bu özellik kasıtlı. Github'dan silinen tüm uzak dalları kaldırmanın doğru bir yolunun aşağıdaki komutu çalıştırmak olduğunu öğrendim.

git fetch --prune

Ardından dalları komut paletinden kaldırmak için Visual Studio'yu yeniden başlatın


6
@Brian, bu, sahip olduğunuz herhangi bir yerel şubeyi kaldırmaz. Bu komut origin/branch_name, VSCode'daki hızlı geçiş git menüsünden kaldırır. Örneğin, yerel bir şubeniz varsa testve onu Github'a itiyorsanız, iki dal vardır testve origin/testgit dal menüsünde budama, origin/testdalı değil sadece dalı kaldırır test.
davidhu

@Brian Bunun, VS Code yeniden başlatıldıktan sonra uzaktan silinen dalları temizleyeceğini buldum
David Wilton

bu komut çalışmıyor. git branchMevcut tüm şubeleri içeren bir açılır listeyi görmek için hem do komut verdiğinde hem de şube adına tıkladığında listedeki tüm şubeleri görüyorum
Anna Olshevskaia

@AnnaOlshevskaia git branchyalnızca yerel şubeleri listeler, bu komutun remotes/branch_nameşubeleri kaldırması gerekir . git branch -aHer şeyi görmeye çalışın .
davidhu

2
VS Code'u yeniden başlatmanıza gerek yok, Kaynak Kontrol menüsündeki Yenile düğmesine basmanız yeterli
AS

72

Yerel şubeler, Komut Paletini (Ctrl-Shift-P) açtıktan sonra Git Seçilerek: Şubeyi Sil ... ile Visual Studio Code'dan kaldırılabilir , ardından listeden uygun olanı seçerek yerel şubeyi silebilirsiniz.


1
Test etmedim, ancak yalnızca yerel şubeleri gösteriyor gibi görünüyor, bu yüzden açıklandığı gibi çalışmalıdır.
jave.web

2
@TylerBell Daha önce de söylediği gibi, uzak dalı değil yerel şubeyi kaldırma yöntemidir.
Anbuselvan Rocky

2
cevap bu olmalıydı. Neden bunu kendim bilmeyecek kadar aptal olduğumu bilmiyorum. teşekkür ederim @ matthew-disney-cook
Serzhan Akhmetov

17

GitHub'dan kaldırılan dallar iyi ... sadece GitHub'dan kaldırıldı. Makinenizde hala yerel şubeniz var. Yerel şube çalıştırmayı silmek için git branch -d the_local_branch. VS Code'da bunu yapmak için bir komut yoktur, ancak View: Toggle Integrated Terminalkomut kullanarak VSCode'daki terminali başlatabilir ve ondan komut çalıştırabilirsiniz.

Şube yönetimi hakkında daha fazla bilgi için lütfen git belgelerini ziyaret edin - https://git-scm.com/book/be/v2/Git-Branching-Branch-Management


Hey teşekkürler. Evet, şu anda git komutlarını kullanıyorum .. ama vscode git sync'in uzaktan kumandanın onları kaldırdığını fark edeceğini veya vurgulayacağını umuyordum. Sanırım :-)
Drenai

Git-komut satırlarında yerel git komutlarını desteklemedikleri için oldukça aptalca. Kötü tasarlanmış.
Steven

ayrıca burada uzatma bekliyor :)
Marko

1
Lütfen @ matthew-disney-cook tarafından verilen yukarıdaki yanıta bakın
Orangutech

17

Komut paletini açın (Ctrl + Shift + P) ve Git: Getir (Prune) öğesini seçin .

Bu özellik edildi birleşti Nov 20, 2018 tarihinde VS Kanunu içine.


1
git'in bu varsayılan davranışını vscode içinde çekmenin bir yolu var mı?
Tuncay Göncüoğlu

9

Soruyu şu şekilde yorumladım: Komut paletinden Git Fetch (Prune) kullandığım için birleştirilen yerel dallarımı nasıl silebilirim . Bu bir "hack" olarak düşünülebilir, ama ben bunu kullanıyorum. PowerShell terminalinde:

$branches = (git branch --merged).replace(" ", "").replace("*", "") | ? { $_ -ne "develop" -and $_ -ne "master" }
foreach ($branch in $branches) { git branch $branch -d }

PoSH'ye aşina değilseniz, işte bu işe yarar: ilk satır, birleştirilmiş tüm dalların adını alır (geliştirme ve ana hat hariç) ve ikinci satır, bu liste boyunca döngüler ve "git branch -d ". Şube tamamen birleştirildiği sürece şunları görmelisiniz:

Deleted branch <branch name> (was <commit ID>).

her şube için. Bazen silinemeyen bir şubeyle karşılaşırım - eğer bu olursa ve silinmesinin güvenli olduğundan eminseniz (yani, depolanmamış yerel çalışmanızı kaybetmezsiniz), çalıştırabilirsiniz:

git branch <branch name> -D

Yerel şubeyi zorla silen büyük D'ye dikkat edin.


Bu bir deli PowerShell ı çalıştırmak için cesaret için bir upvote vermek zorunda command😊 o senin repo
Drenai

2
Dahi ile delilik arasında ince bir çizgi vardır. Bu, çılgınlık tarafında, bu çizgiden çok uzakta.
Darren G

1
Hayır değil. Baktığınızda o kadar karmaşık değil ve her neyse, buradaki yanıtların powershell çevirisi: stackoverflow.com/questions/6127328/…
Scott Stafford

@ScottStafford Dalları silmek için 170 karakterlik bir komut simple | complexbölmenin karmaşık tarafında ?
Drenai

7

Yapmanız gereken tek şey şu komutu çalıştırmak:

git remote prune origin

Yapabileceğiniz fazladan bir şey, çünkü bazen sadece bunun için bir terminal açmak can sıkıcıdır .. vscode içine bir görev ekleyebilirsiniz.

Bunu yapmak için lütfen şu adımları izleyin:

  1. VSCode Görünümünde> Komut Paleti (cmd / ctrl + Shift + P)
  2. Görevi Yapılandır yazın
  3. Şablondan tasks.json dosyası oluştur'u seçin ve .vscode klasörü altında yeni bir dosya oluşturulacaktır .
  4. Görevler dizisi içinde şunu ekleyin:

{"label": "Git Prune", "type": "shell", "command": "git remote prune origin", "problemMatcher": []}

Bu nasıl kullanılır:

  1. Komut Paletini Aç
  2. Tip Görevi Çalıştır ve seçin
  3. Git Prune'u seçin

Referans:

  1. Git erik

git remote prune originKabul edilen cevaptan farklı olup olmadığını biliyor musunuz git fetch --prune? Run Task ayrıntısı harika, yayınladığınız için teşekkürler
Drenai

@Drenai Hayır, onlar aynı. Ancak tam bir yanıt için buraya bakın
Bogdan Alexandru Militaru

5

Tüm yerel şubeleri (ana dal hariç) şu şekilde kaldırabilirsiniz:

git branch -r | grep -v "master" | xargs git branch -D

Ve hala origin/XXXXVSCode'da olduğu gibi görünen ancak zaten silinmiş olan tüm dalları kaldırabilirsiniz origin:

git fetch --prune

Not:

Yukarıdaki ilk komut ( https://stackoverflow.com/a/52006270/3120163 adresinden alınmıştır ):

  • tüm şubeleri listeleyin
  • ana dalı listeden kaldır
  • listedeki şubeleri sil

Bu ilk komutun açıklamasını ekleyebilirseniz harika olur - çok kullanışlı 👍
Drenai

2
@Drenai
Adrien Renaud

4

Bunu düzeltmenin bir yolunu buldum. Bu nedenle, Github deposuna bağlanan uzaktan kumandayı kaldırmanız, ardından kumandayı tekrar eklemeniz gerekir.

Github'dan silinen tüm şubeler artık vscode'da görünmeyecek. originUzak deponun adının bu olduğunu varsayarsak .

git remote remove origin

Sonra

git remote add origin git@github.com:your-username/repo-name.git

1
bildiğim kadarıyla hayır. Artık var olmayan uzak dalları kaldırmanın tek yolu bu.
davidhu


1

Artık git fetch --pruneVSCode'u yeniden başlatmanız gerekmiyor.
VSCode 1.52 (Kasım 2020) ile artık şunlara sahipsiniz:

Git: Getirilirken erit

git.pruneOnFetchAyarın etkinleştirilmesi, git fetch --pruneuzak referanslar getirilirken VS Kodunun çalışmasını sağlayacaktır .

GitHub'dan silindikten sonra artık yerel olarak fazladan şube yok.

Bkz PR 89249 sabitleme, konuyu 86813 :

Kullanım:

{
   "git.pruneOnFetch": true
}

Ayar falsevarsayılan olarak yapılır.

Bu, --prunebayrağı tüm git getirmelerine ekler .

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.