Dalam repo saya saat ini, saya memiliki output berikut:
$ git branch -a
* master
remotes/origin/master
remotes/public/master
Saya ingin menghapus remotes/public/master
dari daftar cabang:
$ git branch -d remotes/public/master
error: branch 'remotes/public/master' not found.
Juga, output git remote
aneh, karena tidak mencantumkan public
:
$ git remote show
origin
Bagaimana saya bisa menghapus 'remote / publik / master' dari daftar cabang?
Perbarui, coba git push
perintah:
$ git push public :master
fatal: 'public' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
git
branch
remote-branch
cmcginty
sumber
sumber
git remote prune [remote-name]
ataugit fetch -p [remote-name]
tidak dalam skenario Anda? Melakukannya dengangit gc
jauh lebih kuat dari biasanya.git remote prune [remote-name]
tidak akan bekerja dengan git svn, meskipun tidakgit gc
...git branch -rd origin/name
tidak bekerja. @ Casey, Anda mungkin harus memilih jawaban kedua - itu sedikit kurang berbahaya.master
... terutama ketika menghapus pada remote.Jawaban:
Anda mungkin perlu pembersihan:
atau Anda mungkin perlu memangkas:
Namun, tampaknya ini harus dibersihkan dengan sebelumnya
Jadi mungkin Anda mengedit file konfigurasi Anda dan ini tidak terjadi, atau Anda memiliki masalah hak istimewa.
Mungkin jalankan itu lagi dan lihat apa yang terjadi.
Konteks Saran
Jika Anda melihat dalam log revisi , Anda akan perhatikan saya menyarankan lebih banyak teknik "benar", yang karena alasan apa pun tidak ingin mengerjakan repositori mereka.
Saya curiga OP telah melakukan sesuatu yang meninggalkan pohon mereka dalam keadaan tidak konsisten yang menyebabkannya berperilaku agak aneh, dan
git gc
diminta untuk memperbaiki sisa belitan.Biasanya
git branch -rd origin/badbranch
cukup untuk nuking cabang pelacakan lokal, ataugit push origin :badbranch
untuk nuking cabang terpencil, dan biasanya Anda tidak perlu menelepongit gc
sumber
git gc
tidak diperlukan di sini, tetapigit remote prune
membuat saya merasa lebih aman daripada menghapus hal-hal secara manualgit branch -rd
, karena git memverifikasi cabang jarak jauh mana yang dilakukan.Yang perlu Anda lakukan adalah
Ini akan menghapus semua cabang lokal Anda yang dihapus dari jarak jauh.
Jika Anda menggunakan git 1.8.5+ Anda dapat mengatur ini secara otomatis
atau
sumber
Ini akan menghapus cabang jarak jauh yang dinamai
master
Kent Fredric.Untuk membuat daftar cabang pelacak jarak jauh:
Untuk menghapus cabang pelacakan jarak jauh:
sumber
git branch -rd removed_remote/branch
bekerja untuk saya, sedangkan yanggit gc --prune=now
tidak berharga.git prune
tanpa masalah, tetapi rekan kerja saya yang membayar repo utama kami ** BISA HANYA ** menggunakangit branch -rd public/master
solusi gaya untuk membersihkan lingkungannya.git branch -rd public/master
adalah apa yang saya lewatkan. Saya punyaheroku/master
danherkou/master
... lol woopsYang perlu Anda lakukan adalah
Sesederhana itu. Tidak ada alasan untuk memanggil gc di sini.
sumber
git branch -rd $(git branch -r)
lalu membangun kembali yang valid dengan melakukan pengambilan.git config -e
mengganti nama remote saya. Saya mengganti nama remotemine
menjadiorigin
. Kemudian, ini adalah solusi yang paling berhasil bagi saya:git branch -rd $(git branch -r | grep 'mine/')
git gc --prune=now
bukan apa yang kamu inginkan.atau
git remote prune origin
# jika itu sumber jarak jauhadalah apa yang kamu inginkan
sumber
Jawaban yang diterima tidak bekerja untuk saya ketika wasit penuh sesak. Namun ini tidak:
sumber
Dalam kasus saya, saya mencoba menghapus entri yang disimpan
.git/packed-refs
. Anda dapat mengedit file teks biasa ini dan menghapus entri dari itugit br -D
tidak tahu cara menyentuh (Setidaknya dalam ver 1.7.9.5).Saya menemukan solusi ini di sini: https://stackoverflow.com/a/11050880/1695680
sumber
git gc
, ketika paket Anda mengkomit ke dalam arsip yang sangat terkompresi, file ini juga memindahkan referensi ke satu file teks biasa, mungkin untuk keperluan optimasi; Saya berharap versi git yang akan datang bisagit br -D ...
memaket referensi.Dirujuk dari: http://www.gitguys.com/topics/adding-and-removing-remote-branches/
sumber
Saya tidak tahu
git branch -rd
, jadi cara saya menyelesaikan masalah seperti ini untuk diri saya sendiri adalah memperlakukan repo saya sebagai repo jarak jauh dan melakukan penghapusan jarak jauh.git push . :refs/remotes/public/master
. Jika cara lain tidak berhasil dan Anda memiliki referensi aneh yang ingin Anda singkirkan, cara mentah ini pasti. Ini memberi Anda ketepatan yang tepat untuk menghapus (atau membuat!) Segala jenis referensi.sumber
Hanya sedikit terkait, tetapi masih mungkin membantu dalam situasi yang sama seperti yang kami miliki - kami menggunakan berbagi file jaringan untuk repositori jarak jauh kami. Minggu lalu semuanya berjalan dengan baik, minggu ini kami mendapatkan kesalahan "Asal asli tidak mengiklankan referensi untuk ref / kepala / master cabang. Referensi ini mungkin tidak ada di remote atau mungkin disembunyikan oleh pengaturan izin"
Tapi kami percaya tidak ada yang dilakukan untuk merusak hal-hal. NFS melakukan snapshot jadi saya meninjau setiap "versi sebelumnya" dan melihat bahwa tiga hari yang lalu, ukuran dalam MB repositori telah berubah dari 282MB menjadi 33MB, dan sekitar 1.403 file baru dan 300 folder sekarang ada. Saya bertanya kepada rekan kerja saya dan seseorang telah mencoba mendorong hari itu - kemudian membatalkannya.
Saya menggunakan fungsionalitas "Kembalikan" NFS untuk mengembalikannya tepat sebelum tanggal tersebut dan sekarang semuanya berfungsi dengan baik lagi. Saya sudah mencoba memangkas sebelumnya, sepertinya tidak membantu. Mungkin pembersihan yang lebih keras akan berhasil.
Semoga ini bisa membantu orang lain suatu hari nanti!
Jay
sumber
Saya punya masalah serupa. Tidak ada jawaban yang membantu. Dalam kasus saya, saya memiliki dua repositori jarak jauh yang dihapus yang muncul secara permanen.
Ide terakhir saya adalah menghapus semua referensi dengan tangan.
Katakanlah repositori disebut “Repo”. Aku melakukannya:
Jadi, saya menghapus file dan direktori yang sesuai dari folder .git ( folder ini dapat ditemukan di aplikasi Rails Anda atau di komputer Anda https://stackoverflow.com/a/19538763/6638513 ).
Lalu saya lakukan:
Ini menemukan beberapa file teks di mana saya menghapus baris yang sesuai. Sekarang, semuanya tampak baik-baik saja.
Biasanya, Anda harus meninggalkan pekerjaan ini untuk git.
sumber