Saya ingin menghapus cabang secara lokal dan jarak jauh.
Upaya Gagal untuk Menghapus Cabang 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 remotes/origin/bugfix
cabang baik secara lokal maupun jarak jauh?
git
version-control
git-branch
git-push
git-remote
Matthew Rankin
sumber
sumber
deleted remote-tracking branch
": lihat github.com/git/git/commit/…Jawaban:
Ringkasan bisnis plan
Perhatikan bahwa dalam kebanyakan kasus nama jarak jauh adalah
origin
. Dalam hal ini Anda harus menggunakan perintah seperti itu.Hapus Cabang Lokal
Untuk menghapus cabang lokal gunakan salah satu dari yang berikut:
Catatan: The
-d
pilihan adalah alias untuk--delete
, yang hanya menghapus cabang jika sudah digabung sepenuhnya di cabang hulu. Anda juga bisa menggunakan-D
, yang merupakan alias untuk--delete --force
, yang menghapus cabang "terlepas dari status gabungannya." [Sumber:man git-branch
]Hapus Cabang Jarak Jauh [Diperbarui pada 8-Sep-2017]
Pada Git v1.7.0 , Anda dapat menghapus cabang jarak jauh menggunakan
yang mungkin lebih mudah diingat daripada
yang ditambahkan di Git v1.5.0 "untuk menghapus cabang jarak jauh atau tag."
Dimulai pada Git v2.8.0 Anda juga dapat menggunakan
git push
dengan-d
pilihan 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.
Hapus Cabang Jarak Jauh [Jawaban Asli dari 5-Jan-2010]
Dari Bab 3 Pro Git oleh Scott Chacon:
Saya mengeluarkan
git push origin: bugfix
dan itu bekerja dengan indah. Scott Chacon benar — saya ingin mendengarkan halaman itu (atau hampir-hampir telinga anjing dengan menjawab ini di Stack Overflow).Maka Anda harus menjalankan ini di komputer lain
untuk menyebarkan perubahan.
sumber
git fetch --all --prune
pada mesin lain setelah menghapus cabang jarak jauh di server. ||| Setelah menghapus cabang lokal dengangit branch -d
dan menghapus cabang jarak jauh dengangit push origin --delete
mesin lain mungkin masih memiliki "cabang pelacakan usang" (untuk melihat mereka melakukannyagit branch -a
). Untuk menyingkirkan ini lakukangit fetch --all --prune
.git branch -a
untuk melihat semua cabang, Anda juga dapat menggunakangit branch -r
untuk melihat cabang jarak jauh saja. lihat jugagit remote show origin
- sumber: gitready.com/intermediate/2009/02/13/list-remote-branches.htmlgit branch -D Branch_Name
untuk menyingkirkan cabang setempatJawaban Matthew sangat bagus untuk menghilangkan cabang yang jauh dan saya juga menghargai penjelasannya, tetapi untuk membuat perbedaan sederhana antara dua perintah:
Untuk menghapus cabang lokal dari mesin Anda:
git branch -d {the_local_branch}
(gunakan-D
sebagai gantinya untuk memaksa menghapus cabang tanpa memeriksa status gabungan)Untuk menghapus cabang jauh dari server:
git push origin --delete {the_remote_branch}
Referensi: Git: Hapus cabang (lokal atau jarak jauh)
sumber
-D
force dihapus,-d
memberi Anda peringatan jika belum bergabung.'git branch -d your_branch
maka Anda akan kesalahan sepertierror: The branch 'your_branch' is not fully merged. If you are sure you want to delete it, run 'git branch -D your_branch'.
git remote prune <name>
(misalnyagit remote prune origin
) untuk secara lokal menghapus cabang basi yang tidak lagi ada di remote.git branch -a --merged origin/master
Ini akan mencantumkan cabang apa pun, baik lokal maupun jarak jauh; yang telah digabung menjadi master. Informasi tambahan di siniThe jawaban singkat
Jika Anda ingin penjelasan lebih rinci tentang perintah berikut, lihat jawaban panjang di bagian selanjutnya.
Menghapus cabang jarak jauh
Menghapus cabang lokal
Menghapus cabang pelacakan jarak jauh lokal
The Jawaban panjang : ada tiga cabang yang berbeda untuk menghapus!
Saat Anda berurusan dengan menghapus cabang baik secara lokal maupun jarak jauh, perlu diingat bahwa ada tiga cabang berbeda yang terlibat :
X
.X
.origin/X
jarak jauhX
.Poster asli yang digunakan:
Yang hanya menghapus cabang pelacakan jarak jauh lokalnya
origin/bugfix
, dan bukan cabang jarak jauh yang sebenarnyabugfix
aktiforigin
.Untuk menghapus cabang jarak jauh yang sebenarnya , Anda perlu
Detil tambahan
Bagian berikut ini menjelaskan detail tambahan untuk dipertimbangkan saat menghapus cabang pelacak jarak jauh dan Anda.
Mendorong untuk menghapus cabang jarak jauh juga menghapus cabang pelacakan jarak jauh
Perhatikan bahwa menghapus cabang jarak jauh
X
dari baris perintah menggunakangit push
akan juga menghapus cabang pelacakan jarak jauh lokalorigin/X
, sehingga tidak perlu memangkas cabang pelacakan jarak jauh yang sudah usang dengangit fetch --prune
ataugit fetch -p
. Namun, tidak ada salahnya jika Anda tetap melakukannya.Anda dapat memverifikasi bahwa cabang pelacakan jarak jauh
origin/X
juga dihapus dengan menjalankan yang berikut:Memangkas asal cabang pelacakan jarak jauh yang usang / X
Jika Anda tidak menghapus cabang jarak jauh Anda
X
dari baris perintah (seperti di atas), maka repositori lokal Anda masih akan berisi cabang pelacakan jarak jauh (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 menjalankannya
git fetch
dengan--prune
atau lebih pendek-p
. Perhatikan bahwa ini menghapus semua cabang pelacakan jarak jauh lokal yang sudah usang untuk cabang jarak jauh apa pun yang tidak lagi ada di remote :Berikut adalah kutipan yang relevan dari catatan rilis 1.6.6 (penekanan milik saya):
Alternatif untuk pemangkasan otomatis di atas untuk cabang pelacakan jarak jauh yang sudah usang
Atau, alih-alih memangkas cabang-cabang lokal Anda yang sudah ketinggalan zaman
git fetch -p
, Anda dapat menghindari operasi jaringan tambahan dengan hanya menghapus cabang secara manual dengan bendera--remote
atau-r
:Lihat juga
sumber
X
danorigin/X
bookmark di klon lokal (2 cabang), dan kemudian adaX
di remote (membuat 3 cabang).Langkah-langkah untuk menghapus cabang:
Untuk menghapus cabang jarak jauh:
Untuk menghapus cabang lokal , Anda memiliki tiga cara :
Menjelaskan: OK, cukup jelaskan apa yang terjadi di sini!
Cukup lakukan
git push origin --delete
untuk menghapus 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 hanya menghapus cabang lokal saja ! ...-D
singkatan--delete --force
yang akan menghapus cabang meskipun tidak digabung (paksa dihapus), tetapi Anda juga dapat menggunakan-d
kependekan yang mana--delete
yang melempar kesalahan masing-masing dari status gabungan cabang ...Saya juga membuat gambar di bawah ini untuk menunjukkan langkah-langkahnya:
sumber
git branch -a
akan menampilkan cabang lokal dan jauh. Ini akan membantu Anda memperkenalkan diagram.git remote prune origin
Salinan cabang-cabang Anda yang dihapus tidak terhapus oleh ini. Efek yang sama dicapai dengan menggunakangit fetch --prune
Anda juga dapat menggunakan yang berikut ini untuk menghapus cabang jarak jauh
Yang melakukan hal yang sama dengan
tetapi mungkin lebih mudah diingat.
sumber
git branch -d <local_branch>
ataugit branch -D <local_branch>
untuk penghapusan paksaKiat: Saat Anda menghapus cabang menggunakan
atau
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 a
git branch -a
.Untuk mengatasi ini, anggota tim Anda dapat memangkas cabang yang dihapus dengan
Ini biasanya
git remote prune origin
.sumber
git push
operasi di atas menghapus cabang lokal dan cabang jarak jauh.git remote prune
ini adalah cara yang agak usang untuk menghapus cabang pelacakan jarak jauh yang sudah usang, cara yang lebih baru untuk melakukannya adalah dengan menggunakangit fetch --prune
ataugit fetch -p
.Jika Anda ingin menghapus cabang, pertama checkout ke cabang selain cabang yang akan dihapus.
Menghapus cabang lokal:
Menghapus cabang jarak jauh:
sumber
sumber
-D
memaksa penghapusan. Itu selalu lebih baik untuk digunakan-d
, yang akan mengingatkan jika Anda perlu melakukan sesuatu yang berbahaya.Ini sederhana: Jalankan saja perintah berikut:
Untuk menghapus cabang Git baik secara lokal maupun jarak jauh, pertama-tama hapus cabang lokal menggunakan perintah ini:
(Ini
example
adalah nama cabang.)Dan setelah itu, hapus cabang jarak jauh menggunakan perintah ini:
sumber
Pendekatan lain adalah:
PERINGATAN: Ini akan menghapus semua cabang jarak jauh yang tidak ada secara lokal. Atau lebih komprehensif,
akan secara efektif membuat repositori jarak jauh terlihat seperti salinan lokal repositori (kepala lokal, remote dan tag dicerminkan pada remote).
sumber
Saya menggunakan yang berikut ini di pengaturan Bash saya :
Maka Anda dapat menelepon:
sumber
git push origin --delete $1
file di jalur Anda dipanggilgit-shoot
dangit shoot branchname
akan bekerja juga.Hapus secara lokal:
Untuk menghapus cabang lokal, Anda dapat menggunakan:
Untuk menghapus cabang secara paksa, gunakan
-D
sebagai ganti-d
.Hapus dari jarak jauh:
Ada dua opsi:
Saya sarankan Anda menggunakan cara kedua karena lebih intuitif.
sumber
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
sumber
Jika Anda ingin menyelesaikan kedua langkah ini dengan satu perintah, Anda dapat membuat alias untuk itu dengan menambahkan di bawah ini ke
~/.gitconfig
:Atau, Anda dapat menambahkan ini ke konfigurasi global Anda dari baris perintah menggunakan
CATATAN : Jika menggunakan
-d
(huruf kecil d), cabang hanya akan dihapus jika telah digabung. Untuk memaksa penghapusan terjadi, Anda harus menggunakan-D
(huruf besar D).sumber
&&
dengan;
sehingga bahkan jika perintah pertama gagal yang kedua masih akan mengeksekusi (kadang-kadang hanya lokal atau hanya ada jarak jauh).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>
sumber
Anda juga dapat melakukan ini menggunakan
git remote prune origin
Ini memangkas dan menghapus cabang pelacakan jarak jauh dari
git branch -r
daftar.sumber
Selain jawaban lain, saya sering menggunakan alat git_remote_branch . Ini adalah instalasi tambahan, tetapi memberi Anda cara yang nyaman untuk berinteraksi dengan cabang jarak jauh. Dalam hal ini, untuk menghapus:
Saya menemukan bahwa saya juga menggunakan perintah
publish
dantrack
cukup sering.sumber
Perintah satu baris untuk menghapus lokal, dan jarak jauh :
Atau tambahkan alias di bawah ini ke ~ / .gitconfig Anda . Pemakaian:
git kill branch-name
sumber
git branch -D
dengan hati-hati dalam sebuah skrip, karena itu memaksa-menghapus cabang tanpa memeriksa itu telah digabung. Gunakan-d
untuk aman.Menghapus Cabang
Dan untuk menghapus cabang jarak jauh:
sumber
Hapus cabang jarak jauh
git push origin :<branchname>
Hapus cabang lokal
git branch -D <branchname>
Hapus langkah cabang lokal:
sumber
git push origin :<branchname>
sudah mendorong cabang 'kosong` ke jarak jauh (karenanya menghapus cabang jarak jauh)Katakan saja:
sumber
lebih mudah diingat daripada
sumber
Sekarang Anda dapat melakukannya dengan aplikasi GitHub Desktop .
Setelah meluncurkan aplikasi
Beralih ke cabang yang ingin Anda hapus
Dari menu "Cabang", pilih, "Batalkan publikasi ...", agar cabang dihapus dari server GitHub.
Dari menu "Cabang", pilih, 'Hapus " branch_name " ...', untuk menghapus cabang dari mesin lokal Anda (AKA mesin yang sedang Anda kerjakan)
sumber
Ini sangat sederhana:
Untuk menghapus cabang jarak jauh
Atau
Untuk menghapus cabang lokal
sumber
--delete
alih-alih-d
menghapus cabang jarak jauh.-d
opsi adalah alias untuk--delete
dan jika--delete
berfungsi maka-d
harus juga berfungsi, jika Anda ingin menghapus cabang, Anda dapat menggunakan-D
sebagai ganti-d
atau--delete
.Untuk menghapus secara lokal - (normal)
Jika cabang Anda dalam proses rebasing / penggabungan dan itu tidak dilakukan dengan benar, itu berarti Anda akan mendapatkan kesalahan,
Rebase/Merge in progress
, sehingga dalam hal ini, Anda tidak akan dapat menghapus cabang Anda.Jadi Anda harus menyelesaikan rebasing / penggabungan. Jika tidak, Anda dapat melakukan penghapusan paksa dengan menggunakan,
Untuk menghapus di remote :
Anda dapat melakukan hal yang sama menggunakan:
Representasi grafis:
sumber
Ini tidak akan berfungsi jika Anda memiliki tag dengan nama yang sama dengan cabang di remote:
Dalam hal ini Anda perlu menentukan bahwa Anda ingin menghapus cabang, bukan tag:
Demikian pula, untuk menghapus tag, bukan cabang yang akan Anda gunakan:
sumber
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 menjadisome_other_branch
, misalnya.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. Ini adalah contoh kapangit 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:
sumber
Saya muak dengan googling untuk jawaban ini, jadi saya mengambil pendekatan yang mirip dengan jawaban yang diposting crizCraig sebelumnya.
Saya menambahkan yang berikut ke profil Bash saya:
Lalu setiap kali saya selesai dengan cabang (digabung menjadi
master
, misalnya) saya menjalankan yang berikut di terminal saya:... yang kemudian dihapus
my-branch-name
dariorigin
dan juga secara lokal.sumber
--delete "$@"
dan-D "$@"
bukannya$1
akan menanganinya untuk beberapa cabang.git branch -d
(dengan huruf kecil 'd') terlebih dahulu untuk memastikan perubahan telah digabungkan, dan kemudian mendorong jika berhasil (dimasukkan&&
di antara perintah)Sebelum dieksekusi
pastikan Anda menentukan terlebih dahulu apa nama persis cabang jauh dengan mengeksekusi:
Ini akan memberi tahu Anda apa yang harus dimasukkan persis untuk
<branch>
nilai. (branch
peka huruf besar kecil!)sumber
Menggunakan:
Jika Anda yakin ingin menghapusnya, jalankan
Sekarang untuk membersihkan jalankan remote cabang dihapus
sumber