Saya ingin menghapus cabang secara lokal dan jarak jauh.
$ git branch -d remotes/Origin/bugfix
error: branch 'remotes/Origin/bugfix' not found.
$ git branch -d Origin/bugfix
error: branch 'Origin/bugfix' not found.
$ git branch -rd Origin/bugfix
Deleted remote branch Origin/bugfix (was 2a14ef7).
$ git Push
Everything up-to-date
$ git pull
From github.com:gituser/gitproject
* [new branch] bugfix -> Origin/bugfix
Already up-to-date.
Apa yang harus saya lakukan berbeda untuk berhasil menghapus cabang remotes/Origin/bugfix
secara lokal dan jarak jauh?
$ git Push --delete <remote_name> <branch_name>
$ git branch -d <branch_name>
Perhatikan bahwa dalam kebanyakan kasus nama jarak jauh adalah Origin
.
Untuk menghapus cabang lokal gunakan salah satu dari yang berikut:
$ git branch -d branch_name
$ git branch -D branch_name
Catatan: Opsi -d
adalah alias untuk --delete
, yang hanya menghapus cabang jika telah sepenuhnya digabung dalam cabang hulu. Anda juga bisa menggunakan -D
, yang merupakan alias untuk --delete --force
, yang menghapus cabang "terlepas dari status gabungannya." [Sumber: man git-branch
]
Pada Git v1.7.0 , Anda dapat menghapusjarak jauhcabang menggunakan
$ git Push <remote_name> --delete <branch_name>
yang mungkin lebih mudah diingat daripada
$ git Push <remote_name> :<branch_name>
yang ditambahkan di Git v1.5.0 "untuk menghapus cabang jarak jauh atau tag."
Mulai pada Git v2.8.0 Anda juga dapat menggunakan git Push
dengan opsi -d
sebagai alias untuk --delete
.
Oleh karena itu, versi Git yang telah Anda instal akan menentukan apakah Anda perlu menggunakan sintaks yang lebih mudah atau lebih sulit.
From Chapter 3 of Pro Git oleh Scott Chacon:
Menghapus Cabang Jarak Jauh
Misalkan Anda sudah selesai dengan cabang jarak jauh - katakanlah, Anda dan kolaborator Anda selesai dengan fitur dan telah menggabungkannya ke cabang master jarak jauh Anda (atau cabang apa pun yang menggunakan jalur kode stabil Anda) Anda dapat menghapus cabang jarak jauh menggunakan sintaks agak tumpul
git Push [remotename] :[branch]
. Jika Anda ingin menghapus cabang server-fix Anda dari server, Anda menjalankan yang berikut ini:$ git Push Origin :serverfix To [email protected]:schacon/simplegit.git - [deleted] serverfix
Ledakan. Tidak ada lagi cabang di server Anda. Anda mungkin ingin menutup halaman ini, karena Anda akan memerlukan perintah itu, dan kemungkinan besar Anda akan lupa sintaksisnya. Cara untuk mengingat perintah ini adalah dengan mengingat sintaks
git Push [remotename] [localbranch]:[remotebranch]
yang telah kita bahas sebelumnya. Jika Anda meninggalkan bagian[localbranch]
, maka pada dasarnya Anda mengatakan, "Jangan ambil apa pun di sisiku dan jadikan itu[remotebranch]
."
Saya mengeluarkan git Push Origin :bugfix
dan bekerja dengan baik. Scott Chacon benar — saya ingin dog dog halaman itu (atau sebenarnya dog dog dengan menjawab ini di Stack Overflow).
Maka Anda harus menjalankan ini di komputer lain
git fetch --all --Prune
untuk menyebarkan perubahan.
Jawaban Matthew sangat bagus untuk menghapus cabang jauh dan saya juga menghargai penjelasannya, tetapi untuk membuat perbedaan sederhana antara dua perintah:
Untuk menghapuscabang lokaldari mesin Anda:
git branch -d {the_local_branch}
(gunakan -D
sebagai gantinya untuk memaksa menghapus cabang tanpa memeriksa status gabungan)
Untuk menghapuscabang jarak jauhdari server:
git Push Origin --delete {the_remote_branch}
Referensi: https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote
Jika Anda ingin penjelasan lebih rinci tentang perintah berikut, lihat jawaban panjang di bagian selanjutnya.
Menghapus cabang jarak jauh:
git Push Origin --delete <branch> # Git version 1.7.0 or newer
git Push Origin :<branch> # Git versions older than 1.7.0
Menghapus cabang lokal:
git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force delete un-merged branches
Menghapus cabang pelacakan jarak jauh lokal:
git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter
git fetch <remote> --Prune # Delete multiple obsolete tracking branches
git fetch <remote> -p # Shorter
Saat Anda berurusan dengan menghapus cabang baik lokal maupun jarak jauh, perlu diingat bahwa ada 3 cabang berbeda yang terlibat :
X
.X
.Origin/X
yang melacak cabang jarak jauh X
.Poster asli digunakan
git branch -rd Origin/bugfix
yang hanya menghapus cabang pelacak jarak jauh lokal Origin/bugfix
, dan bukan cabang jarak jauh aktual bugfix
pada Origin
.
Untuk menghapus cabang jarak jauh yang sebenarnya , Anda perlu
git Push Origin --delete bugfix
Bagian berikut ini menjelaskan detail tambahan untuk dipertimbangkan saat menghapus cabang pelacak jarak jauh dan Anda.
Perhatikan bahwa menghapus cabang jarak jauh X
dari baris perintah menggunakan git Push
juga akan menghapus cabang pelacak jarak jauh lokal Origin/X
, sehingga tidak perlu Pangkas cabang pelacakan jarak jauh yang usang dengan git fetch --Prune
atau git fetch -p
tidak ada salahnya jika Anda tetap melakukannya.
Anda dapat memverifikasi bahwa cabang pelacakan jarak jauh Origin/X
juga dihapus dengan menjalankan yang 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
Jika Anda tidak menghapus cabang jarak jauh Anda X
dari baris perintah (seperti di atas), maka repo lokal Anda masih akan berisi cabang pelacakan jarak jauh yang sekarang sudah usang Origin/X
. Ini dapat terjadi jika Anda menghapus cabang jarak jauh secara langsung melalui antarmuka web GitHub, misalnya.
Cara khas untuk menghapus cabang-cabang pelacakan jarak jauh yang sudah usang ini (karena Git versi 1.6.6) adalah dengan menjalankan git fetch
dengan --Prune
atau -p
yang lebih pendek. Perhatikan bahwa ini menghapus semua cabang pelacakan jarak jauh lokal yang sudah usang untuk cabang jarak jauh mana pun yang tidak lagi ada di remote :
git fetch Origin --Prune
git fetch Origin -p # Shorter
Berikut adalah kutipan yang relevan dari catatan rilis 1.6.6 (penekanan tambang):
"git fetch" pelajari
--all
dan--multiple
options, untuk menjalankan fetch dari banyak repositori, dan--Prune
opsi untuk menghapus cabang pelacakan jarak jauh yang menjadi basi. Ini membuat "git remote update" dan "git remote Prune" kurang perlu (tidak ada rencana untuk menghapus "remote update" atau "remote Prune", meskipun).
Sebagai alternatif, alih-alih memangkas cabang-cabang lokal Anda yang sudah ketinggalan zaman melalui git fetch -p
, Anda dapat menghindari melakukan operasi jaringan ekstra dengan hanya menghapus cabang secara manual dengan bendera --remote
atau -r
:
git branch --delete --remotes Origin/X
git branch -dr Origin/X # Shorter
Untuk menghapus cabang jarak jauh:
git Push Origin --delete <your_branch>
Untuk menghapus cabang lokal , Anda memiliki tiga cara :
1: git branch -D <branch_name>
2: git branch --delete --force <branch_name> //same as -D
3: git branch --delete <branch_name> //error on unmerge
Jelaskan: OK, cukup jelaskan apa yang terjadi di sini!
Cukup lakukan git Push Origin --delete
ke hapus cabang jarak jauh Anda SAJA , tambahkan nama cabang di bagian akhir dan ini akan menghapus dan mendorongnya ke jarak jauh pada saat yang sama ...
Juga, git branch -D
, yang cukup menghapus cabang lokalHANYA! ...
-D
adalah --delete --force
yang akan menghapus cabang meskipun tidak digabung (paksa dihapus), tetapi Anda juga dapat menggunakan -d
yang merupakan --delete
yang melontarkan kesalahan masing-masing dari status gabungan cabang ...
Saya juga membuat gambar di bawah ini untuk menunjukkan langkah-langkahnya:
Anda juga dapat menggunakan yang berikut ini untuk menghapus cabang jarak jauh
git Push --delete Origin serverfix
Yang melakukan hal yang sama dengan
git Push Origin :serverfix
tetapi mungkin lebih mudah diingat.
Jika Anda ingin menghapus cabang, pertama checkout ke cabang selain cabang yang akan dihapus.
git checkout other_than_branch_to_be_deleted
Menghapus cabang lokal:
git branch -D branch_to_be_deleted
Menghapus cabang jarak jauh:
git Push Origin --delete branch_to_be_deleted
Kiat: Saat Anda menghapus cabang menggunakan
git branch -d <branchname> # deletes local branch
atau
git Push Origin :<branchname> # deletes remote branch
hanya referensi yang dihapus. Meskipun cabang sebenarnya dihapus pada remote, referensi untuk itu masih ada di repositori lokal anggota tim Anda. Ini berarti bahwa untuk anggota tim lain cabang yang dihapus masih terlihat ketika mereka melakukan git branch -a
.
Untuk menyelesaikan ini anggota tim Anda dapat Pangkas cabang yang dihapus dengan
git remote Prune <repository>
Ini biasanya git remote Prune Origin
.
git branch -D <name-of-branch>
git branch -D -r Origin/<name-of-branch>
git Push Origin :<name-of-branch>
Ini sederhana: Jalankan saja perintah berikut:
Untuk menghapus cabang Git baik secara lokal maupun jarak jauh, pertama-tama hapus cabang lokal menggunakan perintah:
git branch -d example
(di sini example
adalah nama cabang)
Dan setelah itu hapus cabang jauh menggunakan perintah:
git Push Origin :example
Pendekatan lain adalah: -
git Push --Prune Origin
PERINGATAN: Ini akan menghapus semua cabang jarak jauh yang tidak ada secara lokal. Atau lebih komprehensif,
git Push --mirror
akan secara efektif membuat repositori jarak jauh terlihat seperti salinan lokal repositori (kepala lokal, remote dan tag dicerminkan pada remote).
Saya menggunakan yang berikut ini di Bash pengaturan saya:
alias git-shoot="git Push Origin --delete"
Maka Anda dapat menelepon:
git-shoot branchname
Sejak Januari 2013, GitHub menyertakan a Delete branch tombol di sebelah setiap cabang di halaman "Cabang" Anda.
Posting blog yang relevan: Buat dan hapus cabang
Jika Anda ingin menyelesaikan kedua langkah ini dengan satu perintah, Anda dapat membuat alias untuk itu dengan menambahkan di bawah ini ke ~/.gitconfig
Anda:
[alias]
rmbranch = "!f(){ git branch -d ${1} && git Push Origin --delete ${1}; };f"
Atau, Anda dapat menambahkan ini ke konfigurasi global Anda dari menggunakan baris perintah
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 digabung. Untuk memaksa penghapusan terjadi, Anda harus menggunakan -D
(huruf D besar).
Hapus secara lokal:
Untuk menghapus cabang lokal, Anda dapat menggunakan:
git branch -d <branch_name>
Untuk menghapus cabang secara paksa, gunakan -D
bukan -d
.
git branch -D <branch_name>
Hapus dari jarak jauh:
Ada dua opsi:
git Push Origin :branchname
git Push Origin --delete branchname
Saya sarankan Anda menggunakan cara ke-2 karena lebih intuitif.
Untuk menghapus cabang Anda secara lokal dan jarak jauh
Checkout ke cabang utama - git checkout master
Hapus cabang jarak jauh Anda - git Push Origin --delete <branch-name>
Hapus cabang lokal Anda - git branch --delete <branch-name>
Anda juga dapat melakukan ini menggunakan git remote Prune Origin
$ git remote Prune Origin
Pruning Origin
URL: [email protected]/yourrepo.git
* [pruned] Origin/some-branchs
Ini memangkas dan menghapus cabang pelacakan jarak jauh dari daftar git branch -r
.
Selain jawaban lain, saya sering menggunakan git_remote_branch tool. Ini adalah instalasi tambahan, tetapi memberi Anda cara yang nyaman untuk berinteraksi dengan cabang jarak jauh. Dalam hal ini, untuk menghapus:
grb delete branch
Saya menemukan bahwa saya juga cukup sering menggunakan perintah publish
dan track
Satu liner perintah delete lokal, dan jarak jauh :
D=branch-name; git branch -D $D; git Push Origin :$D
atau tambahkan alias di bawah ini ke ~/.gitconfig ; penggunaan: git kill branch-name
[alias]
kill = "!f(){ git branch -D \"$1\"; git Push Origin --delete \"$1\"; };f"
Mari kita asumsikan pekerjaan kita pada "form kontak" cabang selesai dan kita sudah mengintegrasikannya ke dalam "master". Karena kita tidak membutuhkannya lagi, kita dapat menghapusnya (secara lokal):
$ git branch -d contact-form
Dan untuk menghapus cabang jarak jauh:
git Push Origin --delete contact-form
Hapus cabang jarak jauh
git Push Origin :<branchname>
Hapus cabang lokal
git branch -D <branchname>
Hapus langkah cabang lokal:
Katakan saja:
git branch -d <branch-name>
git Push Origin :<branch-name>
Sekarang Anda dapat melakukannya dengan GitHub Desktop app.
Setelah meluncurkan aplikasi
git Push Origin --delete <branch Name>
lebih mudah diingat daripada
git Push Origin :branchName
Untuk menghapus Secara Lokal - (Normal),
git branch -d my_branch
Jika cabang Anda dalam rebasing/menggabungkan kemajuan dan itu tidak dilakukan dengan benar berarti, Anda akan mendapatkan kesalahan Rebase/Merge in progress
sehingga dalam hal itu, Anda tidak akan dapat menghapus cabang Anda.
Jadi, baik kebutuhan Anda untuk menyelesaikan rebasing/penggabungan, jika tidak, Anda bisa memaksa Hapus dengan menggunakan,
git branch -D my_branch
Untuk menghapus di Remote:
git Push --delete Origin my_branch
dapat melakukan hal yang sama dengan menggunakan,
git Push Origin :my_branch # easy to remember both will do the same.
Representasi Grafis,
Ini tidak akan berfungsi jika Anda memiliki tag dengan nama yang sama dengan cabang pada remote:
$ git Push Origin :branch-or-tag-name
error: dst refspec branch-or-tag-name matches more than one.
error: failed to Push some refs to '[email protected]:SomeName/some-repo.git'
Dalam hal ini Anda perlu menentukan bahwa Anda ingin menghapus cabang, bukan tag:
git Push Origin :refs/heads/branch-or-tag-name
Demikian pula, untuk menghapus tag, bukan cabang yang akan Anda gunakan:
git Push Origin :refs/tags/branch-or-tag-name
Banyak jawaban lain akan mengarah pada kesalahan/peringatan. Pendekatan ini adalah bukti yang relatif bodoh meskipun Anda mungkin masih perlu git branch -D branch_to_delete
jika tidak sepenuhnya digabung menjadi some_other_branch
, misalnya.
git checkout some_other_branch
git Push Origin :branch_to_delete
git branch -d branch_to_delete
Pemangkasan jarak jauh tidak diperlukan jika Anda menghapus cabang jarak jauh. Ini hanya digunakan untuk mendapatkan remote terbaru yang tersedia di repositori yang Anda lacak. Saya telah mengamati git fetch
akan menambahkan remote, bukan menghapusnya. Berikut adalah contoh kapan git remote Prune Origin
akan melakukan sesuatu:
Pengguna A melakukan langkah-langkah di atas. Pengguna B akan menjalankan perintah berikut untuk melihat cabang jarak jauh yang terbaru
git fetch
git remote Prune Origin
git branch -r
Saya muak dengan googling untuk jawaban ini, jadi saya mengambil pendekatan yang mirip dengan jawaban yang diposting crizCraig sebelumnya.
Menambahkan yang berikut ke profil Bash saya:
function gitdelete(){
git Push Origin --delete $1
git branch -D $1
}
Lalu setiap kali saya selesai dengan cabang (digabung menjadi master
, misalnya) saya menjalankan yang berikut di terminal saya:
gitdelete my-branch-name
... yang kemudian menghapus my-branch-name
dari Origin
serta lokal.
Sebelum dieksekusi
git branch --delete <branch>
pastikan Anda menentukan terlebih dahulu apa nama EXACT dari cabang jauh dengan mengeksekusi:
git ls-remote
Ini akan memberi tahu Anda apa yang harus dimasukkan PERSIS untuk nilai <branch>
. (branch
peka huruf besar-kecil!)
git Push Origin :bugfix # Deletes remote branch
git branch -d bugfix # Must delete local branch manually
Jika Anda yakin ingin menghapusnya, jalankan
git branch -D bugfix
Sekarang untuk membersihkan jalankan remote cabang dihapus
git remote Prune Origin
Hancurkan semua jawaban lainnya. Membutuhkan Ruby 1.9.3+
, teruji hanya di OS X.
Panggil file ini git-remove
, buat itu dapat dieksekusi, dan letakkan di jalur Anda. Kemudian gunakan, misalnya, git remove temp
.
#!/usr/bin/env Ruby
require 'io/console'
if __FILE__ == $0
branch_name = ARGV[0] if (ARGV[0])
print "Press Y to force delete local and remote branch #{branch_name}..."
response = STDIN.getch
if ['Y', 'y', 'yes'].include?(response)
puts "\nContinuing."
`git branch -D #{branch_name}`
`git branch -D -r Origin/#{branch_name}`
`git Push Origin --delete #{branch_name}`
else
puts "\nQuitting."
end
end
Saya menambahkan alias berikut ke file .gitconfig
saya. Ini memungkinkan saya untuk menghapus cabang dengan atau tanpa menentukan nama cabang. Nama cabang secara default ke cabang saat ini jika tidak ada argumen yang diteruskan.
[alias]
branch-name = rev-parse --abbrev-ref HEAD
rm-remote-branch = !"f() { branch=${1-$(git branch-name)}; git Push Origin :$branch; }; f"
rm-local-branch = !"f() { branch=${1-$(git branch-name)}; git checkout master; git branch -d $branch; }; f"
rm-branch-fully = !"f() { branch=${1-$(git branch-name)}; git rm-local-branch $branch; git rm-remote-branch $branch; }; f"
Opsi alternatif untuk baris perintah untuk menghapus cabang jarak jauh adalah halaman cabang GitHub.
Lihat misalnya: https://github.com/angular/angular.js/branches
Ditemukan di halaman Code
-> Branches
dari repositori GitHub.
Saya biasanya lebih suka baris perintah tetapi halaman GitHub ini menunjukkan banyak informasi tentang cabang, seperti tanggal dan pengguna terakhir diperbarui, dan jumlah komit di depan dan belakang. Ini berguna ketika berhadapan dengan sejumlah besar cabang.
Saya juga memiliki masalah serupa, dan ini tampaknya berhasil: Ini menghapus cabang lokal. git branch -d the_local_branch
Ini menghapus cabang jarak jauh git Push Origin :the_remote_branch
Ada jawaban yang bagus, tetapi, jika Anda memiliki banyak cabang, menghapusnya satu per satu secara lokal dan secara remote, akan menjadi tugas yang membosankan. Anda dapat menggunakan skrip ini untuk mengotomatiskan tugas ini.
branch_not_delete=( "master" "develop" "our-branch-1" "our-branch-2")
for branch in `git branch -a | grep remotes | grep -v HEAD | grep -v master`; do
# delete prefix remotes/Origin/ from branch name
branch_name="$(awk '{gsub("remotes/Origin/", "");print}' <<< $branch)"
if ! [[ " ${branch_not_delete[*]} " == *" $branch_name "* ]]; then
# delete branch remotly and locally
git Push Origin :$branch_name
fi
done
Sumber: menghapus-git-branch-sekaligus
Menggunakan GitBash Anda dapat menjalankan yang berikut:
git branch --delete <branch>
Dari aplikasi desktop GitHub, ketika Anda memeriksa cabang, Anda dapat menghapus Lokal cabang melalui strip menu Branch:
Jika Anda TIDAK menggunakan aplikasi desktop GitHub, dan menggunakan IDE seperti Visual Studio untuk kontrol sumber lokal Anda, yang harus Anda lakukan adalah beberapa langkah cepat:
Lalu, setelah masuk ke akun GitHub Anda secara online, buka repositori dan klikSemua Cabangtab. Dari sana, cukup klik ikon tempat sampah kecil di sebelah kanan pada nama brach yang ingin Anda hapus.
* Perlu diingat - jika cabang tidak diterbitkan, tidak perlu mencoba untuk menghapusnya dari repositori online Anda.
Saya membuat fungsi praktis berikut di file .bash_aliases saya:
git-delete-branch()
{
if [[ -n $1 ]]; then
git checkout master > /dev/null;
branch_name="$1";
echo "Deleting local $branch_name branch...";
git branch -D "$branch_name";
echo "Deleting remote $branch_name branch...";
git Push Origin --delete "$branch_name";
git remote Prune Origin;
echo "Your current branches are:";
git branch -a;
else
echo "Usage: git-delete-branch <branch_name>";
fi
}
Menurut dokumen terbaru menggunakan terminal kami dapat menghapus dengan cara berikut.
hapus di lokal:
git branch -D usermanagement
hapus di lokasi terpencil:
git Push --delete Origin usermanagement
Sangat sederhana
Untuk menghapus cabang jarak jauh
git Push -d Origin <branch-name>
OR
git Push Origin :<branch-name>
Untuk menghapus cabang lokal
git branch -D <branch-name>