Apakah ada cara sederhana untuk menghapus semua cabang pelacakan yang setara jarak jauh tidak ada lagi?
Contoh:
Cabang (lokal dan jarak jauh)
- menguasai
- asal / master
- origin / bug-fix-a
- origin / bug-fix-b
- origin / bug-fix-c
Secara lokal, saya hanya memiliki cabang master. Sekarang saya perlu mengerjakan perbaikan bug , jadi saya memeriksanya, mengerjakannya, dan mendorong perubahan ke remote. Selanjutnya saya melakukan hal yang sama dengan bug-fix-b .
Cabang (lokal dan jarak jauh)
- menguasai
- bug-fix-a
- bug-fix-b
- asal / master
- origin / bug-fix-a
- origin / bug-fix-b
- origin / bug-fix-c
Sekarang saya memiliki master cabang lokal , bug-fix-a , bug-fix-b . Pemelihara cabang Master akan menggabungkan perubahan saya menjadi master dan menghapus semua cabang yang telah digabung.
Jadi kondisi saat ini sekarang:
Cabang (lokal dan jarak jauh)
- menguasai
- bug-fix-a
- bug-fix-b
- asal / master
- origin / bug-fix-c
Sekarang saya ingin memanggil beberapa perintah untuk menghapus cabang (dalam hal ini bug-fix-a , bug-fix-b ), yang tidak lagi terwakili dalam repositori jarak jauh.
Itu akan menjadi sesuatu seperti perintah yang ada git remote prune origin
, tetapi lebih seperti git local prune origin
.
sumber
* master
di sistem saya. Perintah berikut bekerja untuk saya:git branch -d $(git branch --merged |tail -n +2)
develop
makagit branch --merged
termasukmaster
! Anda mungkin (pasti!) Tidak ingin menghapus itu. Juga saya pikir itu harus digit branch -d
mana huruf kecil-d
berarti "hapus aman" misalnya hanya menghapus jika digabungkan.git branch --merged | grep -v "master" >/tmp/merged-branches && vi /tmp/merged-branches && xargs git branch -d </tmp/merged-branches
Setelah perintah
menghapus referensi jarak jauh, saat Anda menjalankan
itu akan menunjukkan 'hilang' sebagai status jarak jauh. Sebagai contoh,
Jadi, Anda dapat menulis skrip sederhana untuk menghapus cabang lokal yang menjadi remote:
Perhatikan bahwa di atas menggunakan perintah "porselen"
git branch
untuk mendapatkan status upstream.Cara lain untuk mendapatkan status ini adalah dengan menggunakan perintah "plumbing"
git for-each-ref
dengan variabel interpolasi%(upstream:track)
, yang akan[gone]
seperti di atas.Pendekatan ini agak lebih aman, karena tidak ada risiko pencocokan secara tidak sengaja pada bagian dari pesan komit.
sumber
git branch -vv | gawk '{print $1,$4}' | grep 'gone]' | gawk '{print $1}'
awk '/: gone]/{if ($1!="*") print $1}'
. Ini sekarang berfungsi seperti yang diharapkan.test = "!git fetch -p && for branch in `git branch -vv | grep ': gone]' | awk '{print $1}'`; do git branch -D $branch; done"
Sebagian besar jawaban ini sebenarnya tidak menjawab pertanyaan awal. Saya melakukan banyak penggalian dan ini adalah solusi terbersih yang saya temukan. Ini adalah versi yang sedikit lebih menyeluruh dari jawaban itu:
git checkout master
git fetch -p && git branch -vv | awk '/: gone]/{print $1}' | xargs git branch -d
Penjelasan:
Bekerja dengan memangkas cabang pelacakan Anda kemudian menghapus yang lokal yang menunjukkan mereka "hilang"
git branch -vv
.Catatan:
Jika bahasa Anda diatur ke sesuatu selain bahasa Inggris Anda perlu mengubah
gone
ke kata yang sesuai. Cabang yang bersifat lokal saja tidak akan disentuh. Cabang yang telah dihapus pada jarak jauh tetapi tidak digabung akan menampilkan pemberitahuan tetapi tidak dihapus di lokal. Jika Anda ingin menghapus mereka juga berubah-d
ke-D
.sumber
git checkout master && ...
di awal perintah.git branch -vv
akan mulai dengan tanda bintang yang pada akhirnya akan menghasilkan eksekusigit branch -d *
. Berikut adalah versi yang ditambal yang akan mengabaikan garis dengan tanda bintang:git branch -vv | grep ': gone]'| grep -v "\*" | awk '{ print $1; }' | xargs -r git branch -d
Saya biasanya tidak akan menjawab pertanyaan yang sudah memiliki 16 jawaban, tetapi semua jawaban lainnya salah, dan jawaban yang benar sangat sederhana. Pertanyaannya mengatakan, "Apakah ada cara sederhana untuk menghapus semua cabang pelacakan yang setara jarak jauh tidak ada lagi?"
Jika "sederhana" berarti menghapus semuanya sekaligus, tidak rapuh, tidak berbahaya, dan tanpa bergantung pada alat yang tidak dimiliki semua pembaca, maka jawaban yang tepat adalah: tidak.
Beberapa jawaban sederhana, tetapi mereka tidak melakukan apa yang diminta. Yang lain melakukan apa yang diminta, tetapi tidak sederhana: semua bergantung pada penguraian output Git melalui perintah manipulasi teks atau bahasa scripting, yang mungkin tidak ada pada setiap sistem. Selain itu, sebagian besar saran menggunakan perintah porselen, yang outputnya tidak dirancang untuk diuraikan oleh skrip ("porselen" mengacu pada perintah yang dimaksudkan untuk operasi manusia; skrip harus menggunakan perintah "plumbing" tingkat rendah).
Bacaan lebih lanjut:
git branch
output dalam skrip .git remote prune
,git prune
,git fetch --prune
Jika Anda ingin melakukan ini dengan aman, untuk kasus penggunaan dalam pertanyaan (cabang pelacakan pengumpulan sampah yang telah dihapus di server tetapi masih ada sebagai cabang lokal) dan dengan perintah Git tingkat tinggi saja, Anda harus
git fetch --prune
(ataugit fetch -p
, yang merupakan alias, ataugit prune remote origin
yang melakukan hal yang sama tanpa mengambil, dan mungkin bukan yang Anda inginkan sebagian besar waktu).git branch -v
(cabang pelacakan yatim mana pun akan ditandai "[hilang]").git branch -d [branch_name]
pada setiap cabang pelacakan yatim(yang mana beberapa jawaban lain usulkan).
Jika Anda ingin membuat skrip solusi, maka
for-each-ref
adalah titik awal Anda, seperti dalam jawaban Mark Longair di sini dan jawaban ini untuk pertanyaan lain , tapi saya tidak bisa melihat cara untuk mengeksploitasinya tanpa menulis loop skrip shell, atau menggunakan xargs atau sesuatu .Penjelasan latar belakang
Untuk memahami apa yang terjadi, Anda perlu menghargai itu, dalam situasi pelacakan cabang, Anda tidak memiliki satu cabang, tetapi tiga. (Dan ingat bahwa "cabang" berarti hanya penunjuk ke komit.)
Diberikan cabang pelacakan
feature/X
, repositori jarak jauh (server) akan memiliki cabang ini dan menyebutnyafeature/X
. Repositori lokal Anda memiliki cabangremotes/origin/feature/X
yang artinya, "Ini adalah remote yang memberi tahu saya fitur / cabang X-nya, terakhir kali kami berbicara," dan akhirnya, repositori lokal memiliki cabangfeature/X
yang menunjuk ke komit terbaru Anda, dan dikonfigurasikan ke "lacak"remotes/origin/feature/X
, artinya Anda dapat menarik dan mendorong agar tetap selaras.Pada titik tertentu, seseorang telah menghapus
feature/X
di remote. Sejak saat itu, Anda ditinggalkan dengan lokal Andafeature/X
(yang mungkin Anda tidak mau lagi, karena bekerja pada fitur X mungkin selesai), dan Andaremotes/origin/feature/X
yang tentu saja tidak berguna karena satu-satunya tujuan adalah untuk mengingat keadaan cabang server .Dan Git akan membiarkan Anda secara otomatis membersihkan yang mubazir
remotes/origin/feature/X
- itulah yanggit fetch --prune
terjadi - tetapi untuk beberapa alasan, itu tidak memungkinkan Anda secara otomatis menghapus sendirifeature/X
... meskipun Andafeature/X
masih berisi informasi pelacakan yatim, sehingga ia memiliki informasi untuk mengidentifikasi bekas cabang pelacakan yang telah sepenuhnya digabung. (Lagi pula, itu dapat memberi Anda informasi yang memungkinkan Anda melakukan operasi sendiri.)sumber
xargs
). Ada jugagit alias
untuk menyederhanakan sejumlah kasus.xargs
atau bash, dan mereka mungkin tidak di sini mencari tantangan micro-coding, sebanyak jawaban cepat yang dapat mereka terapkan dengan aman tanpa mengalihkan perhatian mereka lebih jauh dari tujuan sebenarnya. .Saya menemukan jawabannya di sini: Bagaimana saya bisa menghapus semua cabang git yang telah digabung?
Pastikan kita tetap menguasai
Anda dapat memastikan bahwa
master
, atau cabang lain dalam hal ini, tidak bisa dihapus dengan menambahkan yang laingrep
setelah yang pertama. Dalam hal ini Anda akan pergi:Jadi jika kita ingin tetap
master
,develop
danstaging
misalnya, kita akan pergi:Jadikan ini sebagai alias
Karena agak panjang, Anda mungkin ingin menambahkan alias ke
.zshrc
atau.bashrc
. Tambang disebutgbpurge
(untukgit branches purge
):Kemudian muat ulang
.bashrc
atau.zshrc
:atau
sumber
Solusi Windows
Untuk Microsoft Windows Powershell:
git checkout master; git remote update origin --prune; git branch -vv | Select-String -Pattern ": gone]" | % { $_.toString().Trim().Split(" ")[0]} | % {git branch -d $_}
Penjelasan
git checkout master
beralih ke cabang mastergit remote update origin --prune
memangkas cabang-cabang terpencilgit branch -vv
mendapat output verbose dari semua cabang ( referensi git )Select-String -Pattern ": gone]"
hanya mendapat catatan di mana mereka telah dihapus dari jarak jauh.% { $_.toString().Trim().Split(" ")[0]}
dapatkan nama cabang% {git branch -d $_}
menghapus cabangsumber
.Trim()
setelah.toString()
untuk menghapus dua spasi sebelum nama cabang.git branch -d
ke yanggit branch -D
lain saya mendapatkan kesalahan cabang tidak sepenuhnya digabung.git branch -D
adalah merusak dan akan menghapus kerja lokal yang belum mendorong.-d
selalu aman, hati-hati dengan-D
.Pencocokan pola untuk "hilang" di sebagian besar solusi lain agak menakutkan bagi saya. Agar lebih aman, ini menggunakan
--format
bendera untuk mengeluarkan status pelacakan hulu masing-masing cabang .Saya membutuhkan versi Windows-friendly, jadi ini menghapus semua cabang yang terdaftar sebagai "hilang" menggunakan Powershell:
Baris pertama mencantumkan nama cabang lokal yang cabang hulunya "hilang". Baris berikutnya menghapus baris kosong (yang merupakan output untuk cabang yang tidak "hilang"), maka nama cabang diteruskan ke perintah untuk menghapus cabang.
sumber
--format
pilihan tampaknya cukup baru; Saya perlu memperbarui git dari 2.10.sesuatu ke 2.16.3 untuk mendapatkannya. Ini adalah modifikasi saya untuk sistem Linux-ish:git branch --list --format "%(if:equals=[gone])%(upstream:track)%(then)%(refname)%(end)" | sed 's,^refs/heads/,,' | grep . | xargs git branch -D
refname:short
. Kemudian Anda dapat menghapus baris% { $_ -replace '^refs/heads/', '' }
git branch --list --format "%(if:equals=[gone])%(upstream:track)%(then)%(refname:short)%(end)" | where { $_ -ne "" } | foreach { git branch -d $_ }
Juga mungkin ide yang baik untuk menggunakan-d
bukan-D
. Hapus paksa tidak perlu untuk cabang yang tidak lagi di remote.Hapus semua cabang yang telah digabungkan menjadi master, tetapi jangan mencoba untuk menghapus master itu sendiri:
git checkout master && git pull origin master && git fetch -p && git branch -d $(git branch --merged | grep master -v)
atau tambahkan alias:
alias gitcleanlocal="git checkout master && git pull origin master && git fetch -p && git branch -d $(git branch --merged | grep master -v)"
Penjelasan:
git checkout master
checkout cabang utamagit pull origin master
memastikan cabang lokal memiliki semua perubahan jarak jauh digabungkangit fetch -p
hapus referensi ke cabang jarak jauh yang telah dihapusgit branch -d $(git branch master --merged | grep master -v)
hapus semua cabang yang telah digabungkan menjadi master, tetapi jangan mencoba untuk menghapus master itu sendirisumber
git branch -D
perintahgit branch -d
yang seharusnya mengeluarkan peringatan tentang tidak mendorong cabang.Ini akan memangkas cabang apa pun yang tidak lagi ada di remote.
sumber
X
; Andagit checkout X
; sekarang repositori Anda memiliki cabang pelacakan (lokal)X
dan cabang jarak jauhorigin/X
; repositori jauh menghapusX
; Andagit fetch-p
; di repositori lokal Anda, tidak hanyaorigin/X
tetapi jugaX
telah dihapus. Itukah yang kamu katakan?Namun-jawaban lain untuk tumpukan, menarik banyak dari jawaban Patrick (yang saya suka karena tampaknya menghilangkan ambiguitas tentang di mana
gone]
akan cocok digit branch
output) tetapi menambahkan bengkok * nix.Dalam bentuknya yang paling sederhana:
Saya sudah membungkus
git-gone
skrip ini di jalur saya:NB - The
--format
Opsi ini tampaknya cukup baru; Saya perlu memperbarui git dari 2.10.sesuatu ke 2.16.3 untuk mendapatkannya.EDIT: tweak untuk memasukkan saran tentang
refname:short
dari Benjamin W.NB2 - Saya hanya diuji
bash
, maka hashbang, tapi mungkin portabelsh
.sumber
sed
bagian dengan menggunakan%(refname:short)
di baris pertama?--format
. Cara lain untuk melewatised
bagian ini adalah menggunakangit update-ref -d
. Perhatikan bahwa ini mungkin agak tidak aman, menggunakangit for-each-ref
lebih aman di sini (diberikan--shell
).--format
untuk melakukan ini sendiri. Hanya satu pertanyaan: mengapa#!bash
? Semuanya di sini terlihat portabelsh
untuk saya.Mungkin bermanfaat untuk beberapa, satu baris sederhana untuk menghapus semua cabang lokal kecuali menguasai dan mengembangkan
sumber
'git branch | grep -v "master" | grep -v "develop"
hal-hal seperti itu sebelum berkomitmen untuk menambahkan pada bagian penghapusan dari perintah. 👏😊Ini akan menghapus semua cabang lokal gabungan kecuali referensi master lokal dan yang saat ini sedang digunakan:
Dan ini akan menghapus semua cabang yang telah dihapus dari repositori jarak jauh yang dirujuk oleh " asal ", tetapi masih tersedia secara lokal di " remote / asal ".
sumber
git branch -vv | grep 'gone]' | grep -v "\*" | awk '{print $1}' | xargs -r git branch -d
Penjelasan: Saya lebih suka menggantigit branch --merged
bygit branch -vv
untuk menunjukkan status (hilang) karena sebelumnyagit branch --merged
dapat menunjukkan juga masterSaya tidak berpikir ada perintah bawaan untuk melakukan ini, tetapi aman untuk melakukan hal berikut:
Saat Anda menggunakan
-d
, git akan menolak untuk menghapus cabang kecuali jika benar-benar digabungkan ke dalamHEAD
atau cabang pelacakan jarak jauh hulu. Jadi, Anda selalu dapat mengulangi keluarangit for-each-ref
dan mencoba menghapus setiap cabang. Masalah dengan pendekatan itu adalah saya menduga Anda mungkin tidak inginbug-fix-d
dihapus hanya karenaorigin/bug-fix-d
berisi riwayatnya. Sebagai gantinya, Anda dapat membuat skrip sesuatu seperti berikut:Peringatan: Saya belum menguji skrip ini - hanya gunakan dengan hati-hati ...
sumber
TL; DR:
Hapus SEMUA cabang lokal yang tidak pada jarak jauh
Hapus SEMUA cabang lokal yang tidak pada remote DAN yang sepenuhnya digabung DAN yang tidak digunakan seperti yang dikatakan dalam banyak jawaban sebelumnya.
Penjelasan
git fetch -p
akan memangkas semua cabang yang tidak lagi ada pada jarak jauhgit branch -vv
akan mencetak cabang lokal dan cabang yang dipangkas akan ditandaigone
grep ': gone]'
hanya memilih cabang yang hilangawk '{print $1}'
filter output untuk hanya menampilkan nama cabangxargs git branch -D
akan mengulang semua baris (cabang) dan memaksa menghapus cabang iniMengapa
git branch -D
dan tidakgit branch -d
lain yang Anda miliki untuk cabang yang tidak sepenuhnya digabung.sumber
Anda bisa melakukan ini:
sumber
Berdasarkan info di atas, ini bekerja untuk saya:
Ini menghapus semua cabang lokal dengan berada
': gone] '
di remote.sumber
gone
namanya.Perintah di atas dapat digunakan untuk mengambil cabang yang digabungkan dan dihapus dalam jarak jauh dan menghapus cabang lokal yang tidak lagi tersedia di jarak jauh
sumber
grep gone <(git branch -v) | cut -d ' ' -f 3 | xargs git branch -D
untuk memaksa menghapus semuagone
di mana saja di dalamnya (misusingonefunction
.).Tidak ada yang benar-benar cocok untuk saya. Saya menginginkan sesuatu yang akan membersihkan semua cabang lokal yang melacak cabang jarak jauh, pada
origin
, di mana cabang jarak jauh telah dihapus (gone
). Saya tidak ingin menghapus cabang lokal yang tidak pernah disetel untuk melacak cabang jarak jauh (yaitu: cabang dev lokal saya). Saya juga menginginkan satu baris sederhana yang hanya menggunakangit
, atau alat CLI sederhana lainnya, daripada menulis skrip khusus. Saya akhirnya menggunakan sedikitgrep
danawk
untuk membuat perintah sederhana ini.Inilah yang akhirnya berakhir pada
~/.gitconfig
:Berikut adalah
git config --global ...
perintah untuk menambahkan ini dengan mudahgit prune-branches
:CATATAN: Dalam perintah config, saya menggunakan
-d
opsigit branch
daripada-D
, seperti yang saya lakukan pada konfigurasi aktual saya. Saya menggunakan-D
karena saya tidak ingin mendengar Git mengeluh tentang ranting-ranting yang tidak terbakar. Anda mungkin menginginkan fungsi ini juga. Jika demikian, cukup gunakan-D
alih-alih-d
di akhir perintah konfigurasi itu.sumber
git branch -vv
dan mencari: gone]
dan tidak melakukangit branch -v
dan mencari[gone]
?v
. Jikagit branch -v | grep '[gone]'
berhasil untuk Anda, lakukanlah. Tampaknya lebih bersih.Berdasarkan Tip Git: Menghapus Cabang Lokal Lama , yang terlihat mirip dengan solusi jason.rickman, saya menerapkan perintah khusus untuk tujuan ini yang disebut git menggunakan Bash:
git gone -pn
menggabungkan pemangkasan dan daftar cabang "hilang":Kemudian Anda dapat menarik pelatuk menggunakan
git gone -d
ataugit gone -D
.Catatan
"$BRANCH/.*: gone]"
mana$BRANCH
biasanyaorigin
. Ini mungkin tidak akan berfungsi jika output Git Anda dilokalisasi ke bahasa Prancis dll.sumber
git gone
sepertinya alias untukgit branch -vv | grep 'origin/.*: gone]' | awk '{print $1}' | xargs git branch -d
, yang menyelesaikan masalah OP.Menggambar berat dari sejumlah dari lainnya jawaban di sini, saya sudah berakhir dengan berikut (git 2.13 dan di atas saja, saya percaya), yang harus bekerja pada setiap UNIX-seperti shell:
Ini terutama menggunakan
for-each-ref
alih-alihbranch
(sepertibranch
perintah "porselen" yang dirancang untuk keluaran yang dapat dibaca manusia, bukan pemrosesan mesin) dan menggunakan--shell
argumennya untuk mendapatkan keluaran yang keluar dengan benar (ini memungkinkan kita untuk tidak khawatir tentang karakter apa pun dalam nama ref).sumber
[ ! -z "$ref" ]
artinya. Saya pikir multi-liner sudah membantu. Tapi tetap terima kasih atas masukan Anda!Namun jawaban lain, karena tidak ada solusi yang sesuai dengan kebutuhan saya tentang keanggunan dan lintas platform:
Perintah untuk menghapus cabang lokal tidak pada jarak jauh:
Untuk mengintegrasikannya dengan gitconfig sehingga dapat dijalankan dengan
git branch-prune
:Pesta
PowerShell
(Perlu bantuan dalam menemukan perintah universal untuk PowerShell dan bash)
Mengapa jawaban ini adalah yang terbaik?
git branch-prune
perintah ke git Andagit for-each-ref
--filter
tanpa ketergantungan eksternalPenjelasan:
~\.gitconfig
. Setelah menjalankan ini, Anda cukup melakukannyagit branch-prune
--prune
bendera, yang "memangkas cabang pelacakan jarak jauh tidak lagi di jarak jauh"git for-each-ref
dan--filter
, untuk mendapatkan daftar cabang yang[gone]
ada (tidak ada remote)sumber
Saya datang dengan skrip bash ini. Selalu menjaga cabang
develop
,qa
,master
.sumber
Saya menggunakan metode singkat untuk melakukan trik, saya sarankan Anda untuk melakukan hal yang sama karena dapat menghemat beberapa jam & memberi Anda lebih banyak visibilitas
Cukup tambahkan cuplikan berikut ke .bashrc Anda (.bashprofile di macos).
Anda harus mengedit grep regex agar sesuai dengan kebutuhan Anda (di sini, itu mencegah master, preprod dan dmz dari penghapusan)
sumber
git fetch --all --prune
melakukan trik. Terima kasih!Ini bekerja untuk saya:
sumber
Saya tidak yakin untuk berapa lama, tapi saya menggunakan git-up sekarang, yang menangani itu.
Saya lakukan
git up
dan itu mulai melacak cabang baru dan menghapus yang lama.Hanya untuk membuatnya jelas, itu bukan perintah git out-of-box - https://github.com/aanand/git-up
BTW itu juga menyembunyikan pohon kotor dan membuat rebases masih dengan adil
git up
.Semoga bermanfaat bagi seseorang
sumber
Inilah solusi yang saya gunakan untuk cangkang ikan. Diuji pada
Mac OS X 10.11.5
,fish 2.3.0
dangit 2.8.3
.Beberapa catatan:
Pastikan untuk mengatur yang benar
base_branch
. Dalam hal ini saya gunakandevelop
sebagai cabang dasar, tetapi bisa jadi apa saja.Bagian ini sangat penting:
grep -v "\(master\|$base_branch\|\*\)"
. Ini memastikan bahwa Anda tidak menghapus master atau cabang dasar Anda.Saya menggunakan
git branch -d <branch>
sebagai tindakan pencegahan ekstra, agar tidak menghapus cabang apa pun yang belum sepenuhnya digabung dengan HEAD hulu atau saat ini.Cara mudah untuk menguji adalah menggantinya
git branch -d $f
denganecho "will delete $f"
.Saya kira saya juga harus menambahkan: GUNAKAN RISIKO ANDA SENDIRI!
sumber
Saya telah menulis skrip Python menggunakan GitPython untuk menghapus cabang lokal yang tidak ada pada remote.
Semoga ada yang berguna, silakan tambahkan komentar jika saya melewatkan sesuatu.
sumber
Jika Anda menggunakan
zsh
shell denganOh My Zsh
instal maka cara termudah untuk melakukannya dengan aman adalah dengan menggunakan autocomplete bawaan.Pertama-tama tentukan cabang mana yang ingin Anda hapus dengan:
ini akan menampilkan daftar cabang yang sudah digabung
Setelah Anda tahu beberapa yang ingin Anda hapus lalu ketik:
Yang harus Anda lakukan adalah menekan [tab] dan itu akan menampilkan daftar cabang lokal. Gunakan tab-complete atau tekan saja [tab] lagi dan Anda dapat memutarnya untuk memilih cabang dengan [enter].
Tab Pilih cabang berulang-ulang sampai Anda memiliki daftar cabang yang ingin Anda hapus:
Sekarang cukup tekan enter untuk menghapus koleksi cabang Anda.
Jika Anda tidak menggunakan zsh di terminal Anda ... Dapatkan di sini.
sumber
Saya suka menggunakan pipa karena membuat perintah lebih mudah dibaca.
Ini solusi saya jika Anda ingin menghapus semua cabang kecuali master.
Untuk menghapus cabang lain yang cocok dengan kriteria Anda, modifikasi blok pertama dan kedua.
sumber
Inilah jawaban sederhana yang bekerja untuk saya menggunakan klien git:
Hapus repositori sama sekali dari mesin Anda kemudian periksa lagi.
Jangan main-main dengan skrip yang berisiko.
sumber