Saya berlari git branch -a
* master
remotes/origin/test
remotes/origin/master
Saya ingin menghapus cabang jarak jauh saya
Saya sudah mencoba
git push origin --delete remotes/origin/test
saya mendapatkan
error: tidak dapat menghapus 'remote / origin / test': remote ref tidak ada
Bagaimana itu tidak ada?
Saya melakukan git branch -a
, dan saya melihatnya terdaftar.
Apakah saya melewatkan sesuatu?
git branch -a
akan mendaftar cabang di lokal Anda dan bukan dari remote Anda. Baik?Jawaban:
Perintah ini
git branch -a
memperlihatkan cabang jarak jauh yang ada di repositori lokal Anda . Ini mungkin terdengar agak membingungkan tetapi untuk memahaminya, Anda harus memahami bahwa ada perbedaan antara cabang jarak jauh, dan cabang yang ada di repositori jarak jauh. Cabang jauh adalah cabang lokal yang memetakan ke cabang repositori jarak jauh. Jadi himpunan cabang jarak jauh mewakili keadaan repositori jarak jauh.Cara biasa untuk memperbarui daftar cabang jauh adalah dengan menggunakan
git fetch
. Ini secara otomatis mendapatkan daftar cabang yang diperbarui dari jarak jauh dan mengatur cabang jarak jauh di repositori lokal, juga mengambil objek komit yang mungkin Anda lewatkan.Namun, secara default,
git fetch
tidak menghapus cabang jarak jauh yang tidak lagi memiliki cabang mitra pada jarak jauh. Untuk melakukan itu, Anda harus memangkas daftar cabang jarak jauh secara eksplisit :Ini secara otomatis akan menyingkirkan cabang jarak jauh yang tidak lagi ada di jarak jauh. Setelah itu,
git branch -r
akan muncul daftar cabang yang diperbarui yang benar-benar ada di remote: Dan yang bisa Anda hapus menggunakangit push
.Karena itu, untuk menggunakan
git push --delete
, Anda perlu menentukan nama cabang pada repositori jarak jauh; bukan nama cabang jarak jauh Anda. Jadi untuk menghapus cabangtest
(diwakili oleh cabang jarak jauh Andaorigin/test
), Anda akan menggunakangit push origin --delete test
.sumber
git branch -r | grep "origin"
akan membantu proyek-proyek besar yang menggunakan garpuremotes/origin/
. Atau keduanya.Arti dari itu
remotes/origin/test
adalah bahwa Anda memiliki cabang yang disebuttest
di server jauhorigin
. Jadi perintahnya adalahsumber
Ada pintasan untuk menghapus cabang di asalnya:
git push origin :<branch_name>
Yang sama dengan melakukan
git push origin --delete <branch_name>
sumber
sumber
git push origin --delete yourBranch
sumber
Mengingat bahwa cabang jarak jauh adalah remote / asal / uji Anda dapat menggunakan dua cara:
dan
sumber
Saya mengikuti solusi dengan menyodok dengan sedikit penyesuaian pada akhirnya. Langkah saya ikuti
-
git fetch --prune
;-
git branch -a
mencetak berikut inimaster
branch
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/branch
(cabang jarak jauh untuk dihapus)-
git push origin --delete branch
.Di sini, cabang yang akan dihapus tidak bernama
remotes/origin/branch
tetapi sederhanabranch
. Dan cabang dihapus.sumber
origin/branch
kapan seharusnyabranch
.git branch -a
akan mencantumkan cabang di lokal Anda dan bukan cabang di remote Anda.Dan kesalahannya
error: unable to delete 'remotes/origin/test': remote ref does not exist
berarti Anda tidak memiliki cabang dalam nama itu di remote Anda tetapi cabang itu ada di lokal Anda.sumber
Satu kalimat berguna untuk menghapus cabang selain 'master' dari asal:
Pastikan Anda memahami implikasi menjalankan ini sebelum melakukannya!
sumber
Bagi saya ini bekerja $ ▶ cabang git -D -r asal / mybranch
Detail
$ ▶ git branch -a | grep mybranch remote / origin / mybranch
$ ▶ git branch -r | ambil asal mybranch / mybranch
Cabang $ ▶ git mengembangkan * fitur / pra-penempatan
$ ▶ git push origin --delete mybranch error: tidak dapat menghapus 'mybranch': remote ref tidak ada kesalahan: gagal mendorong beberapa referensi ke '[email protected]: config / myrepo.git'
$ ▶ cabang git -D -r origin / mybranch Cabang asal yang dihapus / mybranch (adalah 62c7421).
$ ▶ git branch -a | ambil mybranch
$ ▶ git branch -r | ambil mybranch
sumber
harus bekerja juga
sumber