Seorang kolega mendorong cabang jarak jauh baru ke origin / dev / homepage dan saya tidak dapat melihatnya ketika saya menjalankan:
$ git branch -r
Saya masih melihat cabang-cabang terpencil yang sudah ada sebelumnya.
Saya berasumsi ini karena referensi jarak jauh lokal saya tidak up-to-date maka ketika saya menjalankan git pull tidak ada yang terjadi karena git pull hanya menarik cabang yang berfungsi saat ini, benar? Tidak seperti git push yang mendorong semua cabang yang memiliki perubahan ke cabang jarak jauh yang sesuai?
git
remote-branch
hybrid9
sumber
sumber
git pull
, terima kasihgit fetch <name-of-remote>
berhasil. Tanpa nama remote, itu TIDAK berhasil.Jawaban:
Pertama, periksa kembali apakah cabang tersebut benar-benar didorong dari jarak jauh, dengan menggunakan perintah
git ls-remote origin
. Jika cabang baru muncul di keluaran, coba dan berikan perintahgit fetch
: itu harus mengunduh referensi cabang dari repositori jarak jauh.Jika cabang jarak jauh Anda masih tidak muncul, periksa kembali (pada
ls-remote
keluaran) apa nama cabang pada kendali jarak jauh dan, secara khusus, jika diawali denganrefs/heads/
. Ini karena, secara default, nilairemote.<name>.fetch
is:sehingga hanya referensi jarak jauh yang namanya dimulai dengan yang
refs/heads/
akan dipetakan secara lokal sebagai referensi pelacakan jarak jauh di bawahrefs/remotes/origin/
(yaitu, mereka akan menjadi cabang pelacakan jarak jauh)sumber
git fetch
, git akan mengunduh referensi dari repositori jarak jauh default yang telah ditentukan di.git/config
: biasanya itu akan dipanggilorigin
, jadi kedua perintah itu setara, tetapi konfigurasi spesifik Anda mungkin berbeda karena beberapa alasan. Tidak, Anda tidak perlu memberikangit fetch
untuk setiap cabang, karena (secara default) semua cabang diambil .git pull
setara dengangit fetch
+git merge
(ataugit rebase
jika Anda telah mengubah default), jadi Anda dapat tetap menggunakangit pull
seperti biasa, dan cabang jarak jauh baru akan muncul dengan sendirinya.git ls-remote gerritrepo:project
menunjukkan cabang jarak jauh baru tetapigit branch -a
tidak ... Saya harus membuat klon lain dan baru kemudian cabang baru akan munculPeriksa apakah
.git/config
mengandungJika demikian, ubah menjadi mengatakan
Maka Anda harus bisa menggunakannya:
sumber
brew tap user/repo
: salinan lokal dari repo yang dikloning olehbrew
memiliki pengaturan yang Anda sebutkan dan tidak mungkin untuk melihat dan menggunakan cabang lain yang saya miliki di repo saya. Terima kasih lagi! :) +1!git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
dan kemudiangit fetch origin
untuk mendapatkan semua cabang asal .Jawaban paling sederhana adalah:
git fetch origin <branch_name>
sumber
fatal: Couldn't find remote ref <branch_name>
Melakukan pembaruan jarak jauh git juga akan memperbarui daftar cabang yang tersedia dari repositori jarak jauh.
Jika Anda menggunakan TortoiseGit, mulai dari versi 1.8.3.0, Anda bisa melakukan "Git -> Sync" dan akan ada tombol "Pembaruan Jarak Jauh" di kiri bawah jendela yang muncul. Klik itu. Maka Anda harus dapat melakukan "Git -> Switch / Checkout" dan memiliki cabang jarak jauh baru muncul di dropdown cabang yang dapat Anda pilih.
sumber
git remote update
adalah cara lama untuk melakukan ini, perintah pilihan yang lebih baru adalahgit fetch
.Katakanlah kita sedang mencari rilis / 1.0.5
Ketika
git fetch -all
sedang tidak bekerja dan bahwa Anda tidak dapat melihat cabang terpencil dangit branch -r
tidak menunjukkan cabang tertentu ini.1. Cetak semua referensi dari jarak jauh (cabang, tag, ...):
git ls-remote origin
Harus menunjukkan cabang jarak jauh yang Anda cari.Cabang baru 'rilis / 1.0.5' muncul di keluaran.
2. Paksa mengambil cabang jarak jauh:
git fetch origin <name_branch>:<name_branch>
Sekarang Anda juga memiliki ref secara lokal, Anda checkout (atau apa pun) cabang ini.
Pekerjaan selesai!
sumber
Kedengarannya sepele, tetapi masalah saya adalah saya tidak berada dalam proyek yang tepat. Pastikan Anda berada dalam proyek yang Anda harapkan; jika tidak, Anda tidak akan bisa menurunkan cabang yang benar.
sumber
Saya menggunakan kekerasan dan melepas remote lalu menambahkannya
sumber
Apa yang akhirnya berhasil untuk saya adalah menambahkan nama repositori jarak jauh ke
git fetch
perintah, seperti ini:Sekarang Anda dapat melihat semuanya seperti ini:
sumber
Anda dapat melakukan checkout cabang jarak jauh / n git fetch && git checkout remotebranch
sumber