Pendeknya;
- Bagaimana cara menghapus remote beberapa remote gabungan?
Lebih banyak latar belakang;
Saya memiliki git repo dengan puluhan remote yang telah digabungkan menjadi master. Saya dapat menghapus remote ini satu per satu dengan menggunakan:
git push --delete origin myBranch-1234
Namun ini adalah proses yang lambat dan membosankan untuk semua remote. Jadi saya mencoba perintah ini:
git branch -r --merged | grep origin | grep -v master | xargs git push origin --delete
git branch -r --merged
mencantumkan semua remote yang digabungkan.
grep origin
memberi tahu perintah untuk menyertakan asal.
grep -v master
memberi tahu perintah untuk mengecualikan master.
xargs git push origin --delete
memberi tahu perintah untuk menghapus daftar remote.
Secara keseluruhan, saya berharap ini mengumpulkan semua remote yang digabungkan dan menghapusnya.
Ketika saya menjalankan perintah di atas, saya menerima yang berikut untuk setiap remote yang digabungkan;
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
Namun remote ini memang ada dan saya dapat melakukan pembayaran masing-masing. Banyak situs dan orang merekomendasikan agar saya menjalankan git fetch --prune
untuk membersihkan referensi yang hilang. Ini tidak melakukan apa-apa karena semua remote ini ada.
Jadi saya meminta Anda, pertukaran tumpukan sayang;
- Mengapa saya dapat menghapus satu remote, tapi tidak banyak?
- Apakah perintah saya benar?
Saya pikir saya kehilangan sesuatu yang kecil. Setiap kali saya meneliti ini, sepertinya saya melakukan ini dengan benar, tetapi saya mendapatkan kesalahan di atas.
sumber
--prune
? Menurut pendapat saya itu cukup menyesatkanorigin/
dalam nama cabang, seperti yang dijelaskan / diselesaikan dalam jawaban lain.Apakah cabang-cabang tersebut dihapus dari remote (asal)? Jika ya, Anda dapat melakukannya
Jika tidak, mereka mungkin kembali bahkan setelah Anda menghapusnya secara lokal.
Pembaruan: Melihat perintah Anda lagi, sepertinya Anda salah membuatnya. Anda mungkin ingin
tetapi sebaliknya Anda melakukan sesuatu seperti
sumber
git branch -r --merged
dan kemudian saya mencoba untuk menghapusnya denganxargs git push origin --delete
. Perintah mencoba untuk menghapus remote kecuali yang dianggapremote ref does not exist
.xargs
untuk melihat apa yang sebenarnya dieksekusi.origin/
awalan pada nama cabang, git sudah mengetahui Anda sedang bekerja dengan cabang asal sejak Anda menjalankangit push origin
. Saran Mykola adalah membuat bagian terakhir dari perintah ituxargs echo
, bukanecho xargs [...]
.Gunakan
sed
untuk menghapus bagian 'origin /' dan mengubahxargs
bagian lttile .sumber