Bagaimana cara menghapus Git branch lokal dan jarak jauh?

Saya ingin menghapus cabang, baik lokal dan jarak jauh.

Gagal untuk Menghapus Remote Branch

``bash $ git branch -d remote/asal/bugfix kesalahan: cabang 'remote/asal/bugfix' tidak ditemukan.

$ git branch -d asal/bugfix kesalahan: cabang 'asal/bugfix' tidak ditemukan.

$ git branch -rd asal/bugfix Dihapus remote branch asal/bugfix (itu 2a14ef7).

$ git push Segala sesuatu yang up-to-date

$ git pull Dari github.com:gituser/gitproject

  • [new branch] bugfix -> asal/bugfix Sudah up-to-date. ``

Apa yang harus saya lakukan secara berbeda untuk berhasil menghapus remote/asal/bugfix cabang baik lokal dan jarak jauh?

Mengomentari pertanyaan (3)
Larutan

Ringkasan Eksekutif

$ git push -d  
$ git branch -d 

Perhatikan bahwa dalam kebanyakan kasus remote nama asal.

Menghapus Cabang Lokal

Untuk menghapus lokal cabang menggunakan salah satu dari berikut:

$ git branch -d branch_name
$ git branch -D branch_name

Catatan: The -d pilihan adalah alias untuk --delete, yang hanya menghapus cabang jika sudah sepenuhnya bergabung di hulu cabang. Anda juga bisa menggunakan -D, yang merupakan alias untuk --delete --force, yang menghapus cabang "terlepas dari digabung status." [Sumber: pria git-cabang]

Menghapus Remote Branch [Diperbarui pada 8-Sep-2017]

Sebagai Git v1.7.0, anda dapat menghapus remote branch menggunakan

$ git push  --delete 

yang mungkin lebih mudah untuk diingat daripada

$ git push  :

yang ditambahkan dalam Git v1.5.0 "untuk menghapus remote cabang atau tag."

Dimulai pada [Git v2.8.0][git-2.8.0] anda juga dapat menggunakan git pushdengandpilihan sebagai alias untuk--delete`.

Oleh karena itu, versi Git anda telah diinstal akan menentukan apakah anda perlu menggunakan lebih mudah atau lebih sulit sintaks.

Menghapus Remote Branch [Original Jawaban dari 5-Jan-2010]

Dari Bab 3 Pro Git oleh Scott Chacon:

Menghapus Remote Cabang

Misalkan anda selesai dengan remote cabang — katakanlah, anda dan rekan kerja anda selesai dengan fitur dan telah bergabung ke remote master cabang (atau apapun branch stabil kode-line lebih dalam). Anda dapat menghapus cabang jarak jauh menggunakan agak tumpul sintaks git push [remotename] :[cabang]. Jika anda ingin menghapus server anda-memperbaiki cabang dari server, anda menjalankan perintah berikut:

$ git push origin :serverfix Untuk git@github.com:schacon/simplegit.git

  • [dihapus] serverfix

Boom. Tidak ada lagi cabang-cabang pada server anda. Anda mungkin ingin dog-ear halaman ini, karena anda akan membutuhkan perintah, dan anda mungkin akan lupa sintaks. Cara untuk mengingat perintah ini adalah dengan mengingat git push [remotename] [localbranch]:[remotebranch] sintaks yang kita pergi sedikit lebih awal. Jika anda meninggalkan dari [localbranch] bagian, maka anda pada dasarnya mengatakan, "Mengambil apa-apa di sisi saya dan membuatnya menjadi [remotebranch]."

Saya mengeluarkan git push origin: bugfix dan itu bekerja dengan indah. Scott Chacon adalah benar—saya akan ingin anjing bahwa halaman (atau hampir telinga anjing ini dengan menjawab pada Stack Overflow).

[git-2.8.0]: https://github.com/git/git/blob/master/Documentation/RelNotes/2.8.0.txt

Maka anda harus melakukan ini pada mesin lainnya

# Fetch changes from all remotes and locally delete 
# remote deleted branches/tags etc
# --prune will do the job :-;
git fetch --all --prune

untuk menyebarkan perubahan.

Komentar (24)

Matius's jawaban sangat bagus untuk menghilangkan remote cabang dan saya juga menghargai penjelasan, tetapi untuk membuat sederhana perbedaan antara dua perintah:

Untuk menghapus cabang lokal dari mesin anda:

git branch -d {the_local_branch} (menggunakan -D bukan untuk memaksa menghapus cabang tanpa memeriksa digabung status)

Untuk menghapus remote branch dari server:

git push origin --delete {the_remote_branch}

Referensi: https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote

Komentar (8)

Jawaban Singkat

Jika anda ingin penjelasan lebih detail mengenai perintah berikut, kemudian melihat jawaban di bagian berikutnya.

Menghapus remote branch:

git push origin --delete   # Git version 1.7.0 or newer
git push origin :          # Git versions older than 1.7.0

Menghapus sebuah cabang lokal:

git branch --delete 
git branch -d  # Shorter version
git branch -D  # Force delete un-merged branches

Menghapus sebuah daerah terpencil-cabang pelacakan:

git branch --delete --remotes /
git branch -dr / # Shorter

git fetch  --prune # Delete multiple obsolete tracking branches
git fetch  -p      # Shorter

Jawaban Panjang: ada 3 cabang yang berbeda untuk menghapus!

Bila anda're berurusan dengan menghapus cabang, baik lokal dan jarak jauh, perlu diingat bahwa ada 3 cabang yang berbeda yang terlibat:

  1. Cabang lokal X.
  2. Remote asal cabang X.
  3. Daerah terpencil-penjejak cabang asal/X yang melacak remote branch X.

Poster asli yang digunakan

git branch -rd origin/bugfix

yang hanya dihapus-nya daerah terpencil-cabang pelacakan asal/bugfix, dan tidak aktual remote branch perbaikan bug pada asal.

Untuk menghapus yang sebenarnya remote branch, yang anda butuhkan

git push origin --delete bugfix

Rincian Tambahan

Bagian berikut ini menggambarkan rincian tambahan yang perlu dipertimbangkan ketika anda menghapus remote dan remote-cabang pelacakan.

Mendorong untuk menghapus remote cabang juga menghapus remote-cabang pelacakan

Perhatikan bahwa menghapus remote branch X dari baris perintah dengan menggunakan git push**juga akan menghapus daerah terpencil-cabang pelacakan**asal/X, sehingga tidak perlu untuk memangkas usang remote-cabang pelacakan dengangit fetch-pruneataugit fetch-p`, meskipun itu tidak't salahnya jika anda tetap melakukannya.

Anda dapat memverifikasi bahwa remote-cabang pelacakan asal/X juga dihapus dengan menjalankan perintah berikut:

# View just remote-tracking branches
git branch --remotes
git branch -r

# View both strictly local as well as remote-tracking branches
git branch --all
git branch -a

Pemangkasan usang lokal remote-cabang pelacakan asal/X

Jika anda didn't menghapus remote branch X dari baris perintah (seperti di atas), maka anda repo lokal masih akan berisi (yang sekarang usang) remote-cabang pelacakan asal/X. Hal ini dapat terjadi jika anda menghapus sebuah remote branch langsung melalui GitHub's web interface, misalnya.

Cara yang khas untuk menghapus usang remote-pelacakan cabang (sejak Git versi 1.6.6) adalah untuk hanya menjalankan git fetchdengan--memangkasatau pendek-p`. Perhatikan bahwa ini akan menghapus semua usang lokal remote-cabang pelacakan untuk setiap cabang yang tidak lagi ada di remote:

git fetch origin --prune
git fetch origin -p # Shorter

Berikut adalah kutipan yang relevan dari 1.6.6 catatan rilis (penekanan dari saya):

"git fetch" belajar --semua dan --beberapapilihan, untuk menjalankan ambil dari banyak repositori, dan --memangkas pilihan untuk menghapus remote tracking cabang-cabang yang pergi basi. Ini membuat "git remote update" dan "git remote prune" kurang diperlukan (tidak ada rencana untuk memindahkan "remote update" atau "remote prune", meskipun).

Alternatif di atas otomatis pemangkasan usang remote-cabang pelacakan

Atau, bukan pemangkasan anda usang lokal remote-cabang pelacakan melalui git fetch-p, anda dapat menghindari membuat jaringan ekstra operasi dengan hanya secara manual menghapus branch(es) dengan --jauh atau -r bendera:

git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter

Lihat Juga

Komentar (3)

langkah-Langkah untuk menghapus cabang:

Untuk menghapus **remote branch:**
git push origin --delete  

Untuk menghapus cabang lokal, anda memiliki tiga cara:

1: git branch -D  

2: git branch --delete --force   //same as -D

3: git branch --delete           //error on unmerge

Menjelaskan: OK, hanya menjelaskan apa yang's terjadi di sini!

Cukup lakukan git push origin --delete untuk menghapus branch jauh HANYA, tambahkan nama cabang pada akhir dan ini akan menghapus dan push ke remote di waktu yang sama...

Juga, git branch -D, yang hanya menghapus cabang lokal HANYA!...

-D singkatan dari --delete --force yang akan menghapus cabang bahkan itu's tidak digabung(force delete), tetapi anda juga dapat menggunakan -d yang merupakan singkatan dari --delete yang melempar kesalahan masing-masing cabang gabungan status...

Saya juga membuat gambar di bawah ini untuk menunjukkan langkah-langkah:

Komentar (4)

Anda juga dapat menggunakan berikut untuk menghapus remote branch

git push --delete origin serverfix

Yang melakukan hal yang sama seperti yang

git push origin :serverfix

tapi itu mungkin lebih mudah untuk diingat.

Komentar (2)

Tip: Bila anda menghapus cabang-cabang yang menggunakan

git branch -d  # deletes local branch

atau

git push origin : # deletes remote branch

hanya referensi dihapus. Meskipun cabang ini benar-benar dihapus pada remote referensi untuk itu masih ada di repositori lokal dari anggota tim anda. Ini berarti bahwa untuk anggota tim lainnya dihapus cabang-cabang yang masih terlihat ketika mereka melakukan git branch -a.

Untuk memecahkan masalah ini anggota tim anda dapat memangkas dihapus cabang dengan

git remote prune 

Biasanya ini adalah git remote prune asal.

Komentar (3)

Jika anda ingin menghapus cabang, pertama checkout untuk cabang lain dari cabang yang akan dihapus.

git checkout other_than_branch_to_be_deleted

Menghapus cabang lokal:

git branch -D branch_to_be_deleted

Menghapus remote branch:

git push origin --delete branch_to_be_deleted
Komentar (0)
git branch -D 
git branch -D -r origin/
git push origin :
Komentar (2)

Ini adalah sederhana: Hanya jalankan perintah berikut:

Untuk menghapus Git branch baik lokal dan jarak jauh, pertama menghapus cabang lokal menggunakan perintah:

git branch -d example

(di sini contoh adalah nama cabang)

Dan setelah itu menghapus remote branch menggunakan perintah:

git push origin :example
Komentar (0)

Pendekatan lain adalah:-

git push --prune origin

PERINGATAN: Ini akan menghapus semua cabang yang tidak ada secara lokal. Atau secara lebih komprehensif,

git push --mirror

efektif akan membuat repositori jauh terlihat seperti salinan lokal dari repositori (kepala daerah, remote dan kategori yang dicerminkan pada remote).

Komentar (1)

Saya gunakan berikut saya Bash pengaturan:

alias git-shoot="git push origin --delete"

Kemudian anda dapat menghubungi:

git-shoot branchname
Komentar (3)

Menghapus secara lokal:

Untuk menghapus sebuah cabang lokal, anda dapat menggunakan:

git branch -d  

Untuk menghapus cabang paksa, gunakan -D bukan -d.

git branch -D 

Menghapus dari jarak jauh:

Ada dua pilihan:

git push origin :branchname  

git push origin --delete branchname 

Saya akan menyarankan anda menggunakan ke-2 cara seperti itu lebih intuitif.

Komentar (0)

Sejak januari 2013, GitHub termasuk Hapus cabang tombol berikutnya untuk masing-masing cabang dalam "cabang-Cabang" di halaman.

Relevan posting blog: Membuat dan menghapus cabang

Komentar (2)

Jika anda ingin menyelesaikan kedua langkah ini dengan satu perintah, anda dapat membuat sebuah alias untuk itu dengan menambahkan kode di bawah ini untuk anda ~/.gitconfig:

[alias]
    rmbranch = "!f(){ git branch -d ${1} && git push origin --delete ${1}; };f"

Atau, anda dapat menambahkan ini ke global config dari baris perintah dengan menggunakan

git config --global alias.rmbranch \
'!f(){ git branch -d ${1} && git push origin --delete ${1}; };f'

NOTE: Jika menggunakan -d (huruf kecil d), cabang hanya akan dihapus jika sudah bergabung. Untuk memaksa menghapus terjadi, anda akan perlu menggunakan -D (huruf D).

Komentar (1)

Untuk menghapus cabang anda secara lokal dan remote

  • Checkout untuk menguasai cabang - git checkout master

  • Menghapus remote cabang - git push origin --delete <cabang-nama>

  • Menghapus cabang lokal anda - git branch --delete <cabang-nama>

Komentar (0)

Anda juga dapat melakukan ini dengan menggunakan git remote prune asal

$ git remote prune origin
Pruning origin
URL: git@example.com/yourrepo.git
 * [pruned] origin/some-branchs

Ini plum dan menghapus jauh-pelacakan cabang dari git branch -r daftar.

Komentar (0)

Selain jawaban yang lain, saya sering menggunakan git_remote_branch tool. It's ekstra pasang, tapi itu membuat anda cara yang nyaman untuk berinteraksi dengan remote cabang. Dalam hal ini, untuk menghapus:

grb delete branch

Saya menemukan bahwa saya juga menggunakan publish dan track perintah-perintah yang cukup sering

Komentar (0)

Salah satu kapal perintah delete baik lokal dan remote:

D=cabang-nama; git branch -D $D; git push origin :$D

atau tambahkan alias di bawah ini untuk anda ~/.gitconfig; penggunaan: git membunuh branch-name

[alias]
    kill = "!f(){ git branch -D \"$1\";  git push origin --delete \"$1\"; };f"
Komentar (1)

Menghapus Cabang

Let's asumsikan kita bekerja pada cabang "contact-form" dilakukan dan kami've sudah terintegrasi ke "master". Karena kita don't perlu lagi, kita bisa menghapusnya (lokal):

$ git branch -d-kontak form

Dan untuk menghapus remote branch:

git push origin --delete contact-form
Komentar (0)

Menghapus remote branch

git push origin :<branchname>

Menghapus cabang lokal

git branch -D <branchname>

Menghapus cabang lokal langkah-langkah:

  1. checkout ke cabang lain
  2. menghapus cabang lokal
Komentar (2)