Kullandığınızda git push origin :staleStuff
, otomatik olarak kaldırılır origin/staleStuff
, böylece koştuğunuzda git remote prune origin
, başkası tarafından kaldırılan bazı dalları budamış olursunuz. İş arkadaşlarınızın artık git prune
kaldırdığınız şubelerden kurtulmak için koşması daha olasıdır .
Peki tam olarak ne git remote prune
yapıyor? Ana fikir: yerel şubelere (şubeleri izleme değil) git remote prune
komutla dokunulmaz ve manuel olarak kaldırılmalıdır.
Şimdi, daha iyi anlamak için gerçek dünyadan bir örnek:
2 şubesi olan bir uzak deponuz var: master
ve feature
. Her iki dalda da çalıştığınızı varsayalım, bu nedenle yerel deponuzda bu referanslara sahip olursunuz (herhangi bir karışıklığı önlemek için tam referans adları verilmiştir):
refs/heads/master
(kısa ad master
)
refs/heads/feature
(kısa ad feature
)
refs/remotes/origin/master
(kısa ad origin/master
)
refs/remotes/origin/feature
(kısa ad origin/feature
)
Şimdi, tipik bir senaryo:
- Başka bir geliştirici
feature
, üzerindeki tüm çalışmaları bitirir , onu içine birleştirir master
ve feature
uzak depodan dalı kaldırır .
- Varsayılan olarak, bunu yaptığınızda
git fetch
(veya git pull
), yerel deponuzdan hiçbir referans kaldırılmaz, dolayısıyla bu 4 referansın tümüne hala sahip olursunuz.
- Onları temizlemeye ve koşmaya karar veriyorsun
git remote prune origin
.
- Git olduğunu tespit
feature
çok dal artık mevcut refs/remotes/origin/feature
a, eski çıkarılmalıdır dalı.
- Şimdi dahil olmak üzere 3 referansınız var
refs/heads/feature
çünkü git remote prune
hiçbir refs/heads/*
referansı kaldırmıyor .
Uzaktan izleme dallarıyla ilişkili yerel şubeleri branch.<branch_name>.merge
yapılandırma parametresi ile belirlemek mümkündür . Bu parametre herhangi bir şeyin çalışması için gerçekten gerekli değildir (muhtemelen dışında git pull
), bu yüzden eksik olabilir.
(yorumlardan örnek ve faydalı bilgilerle güncellendi)
git remote show origin
işaretli dalları arayabilir ve arayabilirsinizstale