ambil dari asal dengan cabang jarak jauh yang dihapus?
441
Ketika saya lakukan git fetch origindan asal memiliki cabang dihapus, sepertinya tidak memperbaruinya di repositori saya. Ketika saya melakukannya git branch -rmasih menunjukkanorigin/DELETED_BRANCH .
Terima kasih banyak. Saya menghapus cabang-cabang itu secara manual sebelumnya.
Maksim Dmitriev
4
Untuk beberapa alasan, perintah Anda tidak berfungsi, tetapi yang ini lakukan untuk cabang jarak jauh yang tidak ada di origingarpu saya : git fetch -p origin Ketika saya kemudian melakukan git branch -r cabang jarak jauh yang tidak ada tidak lagi muncul.
Setelah seseorang menghapus cabang dari repositori jarak jauh, git tidak akan secara otomatis menghapus cabang repositori lokal ketika pengguna melakukan git pull atau git fetch. Namun, jika pengguna ingin semua cabang pelacakan dihapus dari repositori lokal mereka yang telah dihapus dalam repositori jarak jauh, mereka dapat mengetik:
git asal prune jarak jauh
Sebagai catatan, -p param dari git fetch -psebenarnya berarti "prune".
Apa pun pilihan Anda, cabang jarak jauh yang tidak ada akan dihapus dari repositori lokal Anda.
Saya suka ini karena tidak mengambil sesuatu yang baru.
Marek R
30
Anda perlu melakukan hal berikut
git fetch -p
untuk menyinkronkan daftar cabang Anda. The pengguna git mengatakan
-p, --prune
Setelah mengambil, hapus referensi pelacakan jarak jauh yang tidak lagi ada di remote. Tag tidak dapat dipangkas jika diambil hanya karena tag otomatis mengikuti atau karena suatu --tagsopsi. Namun, jika tag diambil karena refspec eksplisit (baik pada baris perintah atau dalam konfigurasi jarak jauh, misalnya jika remote dikloning dengan --mirroropsi), maka tag tersebut juga harus dipangkas.
Saya pribadi suka menggunakan git fetch origin -p --progresskarena ini menunjukkan indikator kemajuan.
fetch: dokumen pemangkasan yang terjadi sebelumnya mengambil
Ini diubah dalam 10a6cc8 ( fetch --prune: Jalankan prune sebelum mengambil, 2014-01-02), tetapi tampaknya tidak ada orang dalam diskusi yang menyadari bahwa kami mengiklankan "setelah" secara eksplisit.
Jadi dokumentasi sekarang menyatakan:
Sebelum mengambil, hapus referensi pelacakan jarak jauh yang tidak lagi ada di remote
Itu karena:
Ketika kami memiliki cabang pelacak jarak jauh bernama " frotz/nitfol" dari pengambilan sebelumnya, dan hulu sekarang memiliki cabang bernama " frotz", mengambil akan gagal menghapus " frotz/nitfol" dengan " git fetch --prune" dari upstream. git akan memberitahu pengguna untuk menggunakan " git remote prune" masalah ini.
Ubah cara fetch --prunekerjanya " " dengan memindahkan operasi pemangkasan sebelum operasi pengambilan. Dengan cara ini, alih-alih memperingatkan pengguna konflik, secara otomatis memperbaikinya.
Jawaban:
Anda perlu melakukan hal berikut
Ini akan memperbarui basis data lokal cabang-cabang terpencil.
sumber
origin
garpu saya :git fetch -p origin
Ketika saya kemudian melakukangit branch -r
cabang jarak jauh yang tidak ada tidak lagi muncul.git remote prune origin
dan mirip dengan yanggit pull --prune
disebutkan di stackoverflow.com/a/6127884/94687 dan stackoverflow.com/a/17983126/94687 .[deleted] (none) -> origin/ < branch name >
dan cabang masih ditampilkan di repo lokal tahu mengapa?git branch
masih menunjukkan cabang yang seharusnya dihapus.Dari http://www.gitguys.com/topics/adding-and-removing-remote-branches/
Sebagai catatan, -p param dari
git fetch -p
sebenarnya berarti "prune".Apa pun pilihan Anda, cabang jarak jauh yang tidak ada akan dihapus dari repositori lokal Anda.
sumber
Anda perlu melakukan hal berikut
untuk menyinkronkan daftar cabang Anda. The pengguna git mengatakan
Saya pribadi suka menggunakan
git fetch origin -p --progress
karena ini menunjukkan indikator kemajuan.sumber
Ini berhasil untuk saya.
sumber
Mengenai
git fetch -p
, perilakunya berubah di Git 1.9, dan hanya Git 2.9.x / 2.10 yang mencerminkan hal itu.Lihat komit 9e70233 (13 Jun 2016) oleh Jeff King (
peff
) .(Digabung oleh Junio C Hamano -
gitster
- dalam komit 1c22105 , 06 Jul 2016)Jadi dokumentasi sekarang menyatakan:
Itu karena:
sumber