Pertanyaan Bagaimana cara menghapus semua cabang Git yang telah digabungkan?


Saya punya banyak cabang Git. Bagaimana cara menghapus cabang yang telah digabungkan? Adakah cara mudah untuk menghapusnya, bukan menghapusnya satu per satu?


1312
2018-05-25 15:54


asal


Jawaban:


MEMPERBARUI:

Anda dapat menambahkan cabang lain untuk mengecualikan seperti master dan dev jika alur kerja Anda memiliki mereka sebagai leluhur yang mungkin. Biasanya saya bercabang dari tag dan master "sprint-start", dev dan qa bukanlah leluhur.

Untuk menghapus semua cabang lokal yang telah digabungkan ke dalam cabang yang saat ini diperiksa:

git branch --merged | egrep -v "(^\*|master|dev)" | xargs git branch -d

Anda dapat melihat bahwa master dan dev dikecualikan jika mereka adalah leluhur.


Anda dapat menghapus cabang lokal yang digabungkan dengan:

git branch -d branchname

Jika tidak digabung, gunakan:

git branch -D branchname

Untuk menghapusnya dari remote di versi lama penggunaan Git:

git push origin :branchname

Di versi terbaru penggunaan Git:

git push --delete origin branchname

Setelah Anda menghapus cabang dari remote, Anda dapat memangkas untuk menyingkirkan cabang pelacakan jarak jauh dengan:

git remote prune origin

atau pangkas cabang pelacakan jarak jauh individu, seperti yang disarankan oleh jawaban lainnya, dengan:

git branch -dr branchname

Semoga ini membantu.


2226
2018-05-25 16:40



Untuk menghapus semua cabang pada remote yang sudah digabung:

git branch -r --merged | grep -v master | sed 's/origin\//:/' | xargs -n 1 git push origin

Dalam versi Git yang lebih baru

git branch -r --merged | grep -v master | sed 's/origin\///' | xargs -n 1 git push --delete origin

316
2017-08-09 08:45



Hanya memperluas jawaban Adam sedikit:

Tambahkan ini ke konfigurasi Git Anda dengan menjalankan git config -e --global

[alias]
    cleanup = "!git branch --merged | grep  -v '\\*\\|master\\|develop' | xargs -n 1 git branch -d"

Lalu Anda dapat menghapus semua cabang gabungan lokal yang melakukan hal sederhana git cleanup.


135
2018-02-18 15:08



Ini juga berfungsi untuk menghapus semua cabang yang digabungkan kecuali master.

git branch --merged | grep -v '^* master$' | grep -v '^  master$' | xargs git branch -d

72
2018-02-07 01:06



Anda akan ingin mengecualikan master & develop cabang dari perintah-perintah itu.

Local git clear:

git branch --merged | grep -v '\*\|master\|develop' | xargs -n 1 git branch -d

Remote git clear:

git branch -r --merged | grep -v '\*\|master\|develop' | sed 's/origin\///' | xargs -n 1 git push --delete origin

Sinkronkan registri lokal dari cabang jarak jauh:

git fetch -p

57
2017-07-03 16:18



Bagi Anda yang berada di Windows dan lebih memilih skrip PowerShell, berikut adalah salah satu yang menghapus cabang gabungan lokal:

function Remove-MergedBranches
{
  git branch --merged |
    ForEach-Object { $_.Trim() } |
    Where-Object {$_ -NotMatch "^\*"} |
    Where-Object {-not ( $_ -Like "*master" )} |
    ForEach-Object { git branch -d $_ }
}

32
2018-06-10 14:00



Git Sweep melakukan pekerjaan hebat ini.


19
2018-02-04 13:53



Anda dapat menambahkan commit ke opsi -merged. Dengan cara ini Anda dapat memastikan hanya untuk menghapus cabang yang digabung menjadi i.e. asal / master

Perintah berikut akan menghapus cabang gabungan dari asal Anda.

git branch -r --merged origin/master | grep -v "^.*master" | sed s:origin/:: |xargs -n 1 git push origin --delete 

Anda dapat menguji cabang mana yang akan dihapus menggantikan asal git push - hapus dengan gema

git branch -r --merged origin/master | grep -v "^.*master" | sed s:origin/:: |xargs -n 1 echo

13
2017-07-08 06:28