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 prunekaldırdığınız şubelerden kurtulmak için koşması daha olasıdır .
Peki tam olarak ne git remote pruneyapıyor? Ana fikir: yerel şubelere (şubeleri izleme değil) git remote prunekomutla 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: masterve 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 masterve featureuzak 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/featurea, eski çıkarılmalıdır dalı.
- Şimdi dahil olmak üzere 3 referansınız var
refs/heads/featureçünkü git remote prunehiçbir refs/heads/*referansı kaldırmıyor .
Uzaktan izleme dallarıyla ilişkili yerel şubeleri branch.<branch_name>.mergeyapı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 originişaretli dalları arayabilir ve arayabilirsinizstale