Dari halaman manual:
Deletes all stale tracking branches under <name>. These stale branches have already been removed from the remote repository referenced by <name>, but are still locally available in "remotes/<name>".
Jadi saya menghapus banyak cabang menggunakan
git push origin :staleStuff
dan kemudian lari
git remote prune origin
Namun, hanya satu cabang lokal yang dipangkas. Beberapa cabang ini dibuat oleh saya, beberapa oleh rekan kerja. Apakah ini menunjukkan bahwa saya tidak melacak cabang tersebut dengan benar sejak awal?
git
version-control
branch
git-branch
git-remote
Felixyz
sumber
sumber
git remote show origin
dan mencari cabang yang bertandastale
Jawaban:
Saat Anda menggunakannya
git push origin :staleStuff
, secara otomatis menghapusorigin/staleStuff
, jadi saat Anda menjalankangit remote prune origin
, Anda telah memangkas beberapa cabang yang telah dihapus oleh orang lain. Kemungkinan besar rekan kerja Anda sekarang perlu larigit prune
untuk menyingkirkan cabang yang telah Anda hapus.Jadi apa sebenarnya yang
git remote prune
dilakukannya? Ide utama: cabang lokal (bukan cabang pelacakan) tidak tersentuh olehgit remote prune
perintah dan harus dihapus secara manual.Sekarang, contoh dunia nyata untuk pemahaman yang lebih baik:
Anda memiliki repositori jarak jauh dengan 2 cabang:
master
danfeature
. Anggaplah Anda sedang mengerjakan kedua cabang, sehingga Anda memiliki referensi ini di repositori lokal Anda (nama referensi lengkap diberikan untuk menghindari kebingungan):refs/heads/master
(nama pendekmaster
)refs/heads/feature
(nama pendekfeature
)refs/remotes/origin/master
(nama pendekorigin/master
)refs/remotes/origin/feature
(nama pendekorigin/feature
)Sekarang, skenario tipikal:
feature
, menggabungkannya kemaster
dan menghapusfeature
cabang dari repositori jarak jauh.git fetch
(ataugit pull
), tidak ada referensi yang dihapus dari repositori lokal Anda, jadi Anda masih memiliki semua 4 referensi tersebut.git remote prune origin
.feature
cabang tidak ada lagi, sehinggarefs/remotes/origin/feature
adalah basi cabang yang harus dihapus.refs/heads/feature
, karenagit remote prune
tidak menghapusrefs/heads/*
referensi apa pun .Anda dapat mengidentifikasi cabang lokal, yang terkait dengan cabang pelacakan jarak jauh, dengan
branch.<branch_name>.merge
parameter konfigurasi. Parameter ini tidak benar-benar diperlukan agar apa pun berfungsi (mungkin kecualigit pull
), jadi mungkin saja hilang.(diperbarui dengan contoh & info berguna dari komentar)
sumber
git prune
. Hanya cabang di/refs/remotes/<remote_name>/
yang tunduk pada pemangkasan; cabang mana pun/refs/heads/
tidak akan tersentuh - Anda harus mengelolanya secara manual.branch.<branch_name>.merge
parameter config.