Kısacası;
- Uzak birden çok birleştirilmiş uzaktan kumandayı nasıl silebilirim?
Daha fazla arka plan;
Master olarak birleştirilen onlarca uzaktan kumandaya sahip bir git repom var. Şunları kullanarak bu uzaktan kumandaları birer birer silebilirim:
git push --delete origin myBranch-1234
Ancak bu, tüm uzaktan kumandalar için yavaş ve sıkıcı bir süreçtir. Bu yüzden şu komutu deniyorum:
git branch -r --merged | grep origin | grep -v master | xargs git push origin --delete
git branch -r --merged
birleştirilmiş tüm uzaktan kumandaları listeler.
grep origin
komuta orijini dahil etmesini söyler.
grep -v master
komuta master'ı dışlamasını söyler.
xargs git push origin --delete
komuta uzaktan kumanda listesinin silinmesini söyler.
Hep birlikte, bunun birleştirilmiş tüm uzaktan kumandaları toplamasını ve silmesini bekliyorum.
Yukarıdaki komutu çalıştırdığımda, birleştirilen her uzaktan kumanda için aşağıdakileri alıyorum;
error: unable to delete 'origin/myBranch-1234': remote ref does not exist
error: unable to delete 'origin/myBranch-1235': remote ref does not exist
error: unable to delete 'origin/myBranch-1236': remote ref does not exist
error: unable to delete 'origin/myBranch-1237': remote ref does not exist
... etc
Ancak bu uzaktan kumandalar var ve her birini kontrol edebilirim. Birçok site ve kişi, git fetch --prune
eksik referansları temizlemek için çalışmamı tavsiye ediyor . Bu hiçbir şey yapmaz çünkü tüm bu uzaktan kumandalar mevcuttur.
Bu yüzden size soruyorum, sevgili yığın değişimi;
- Neden bir uzaktan kumandayı silebilirim, ancak çok fazla değil?
- Benim emrim doğru mu?
Sanırım küçük bir şey kaçırıyorum. Bunu her araştırdığımda, bunu doğru yapıyormuşum gibi görünüyor, ancak yukarıdaki hataları alıyorum.
--prune
? Bence bu oldukça yanıltıcı