Cabang jarak jauh tidak muncul di "git branch -r"


140

Saya telah mendorong ke repositori Bitbucket jarak jauh dan baru-baru ini seorang kolega telah mendorong cabang baru yang dia buat ke repositori yang sama.

Saya mencoba mengambil perubahan yang dia unggah.

 $ git branch -a
 * master
 localbranch1
 localbranch2
 remotes/origin/master

$ git branch -r origin / master

Di UI web untuk Bitbucket saya bisa melihat cabang yang dia buat. Bagaimana saya bisa melakukan ini?

Percobaan berikutnya:

$ git fetch bitbucket
Password for 'https://xxxxx@bitbucket.org':
From https://bitbucket.org/user/repo
 * branch            HEAD       -> FETCH_HEAD

Jika cabang yang dia buat bernama new_branch_b, haruskah saya melihat yang berikut ini?

$ git branch -r
origin/master
origin/new_branch_b

Percobaan ketiga:

$ git remote update
Fetching bitbucket
Password for 'https://xxxxx@bitbucket.org':
From https://bitbucket.org/user/repo
 * branch            HEAD       -> FETCH_HEAD

$ git branch -r
  origin/master

Percobaan keempat:

[remote "bitbucket"]
url = https://user@bitbucket.org/user/repo.git

Saya menelepon remote bitbucketdaripada asal (setidaknya itulah yang saya ingat; saya mengaturnya beberapa waktu yang lalu)

Percobaan kelima:

Saya memperbarui konfigurasi jarak jauh Bitbucket sesuai jawaban kan :

$ git config -e

[remote "bitbucket"]
    url = https://user@bitbucket.org/user/repo.git
    fetch = +refs/heads/*:refs/remotes/bitbucket/*

Bagi kebanyakan orang itu akan disebut asal:

[remote "origin"]
    url = https://user@bitbucket.org/user/repo.git
    fetch = +refs/heads/*:refs/remotes/origin/*

Setelah itu,

$ git remote update

Fetching bitbucket
Password for 'https://user@bitbucket.org':
remote: Counting objects: 48, done.
remote: Compressing objects: 100% (32/32), done.
remote: Total 35 (delta 21), reused 0 (delta 0)
Unpacking objects: 100% (35/35), done.
From https://bitbucket.org/user/repo
 * [new branch]      branch_name1 -> origin/branch_name1
 * [new branch]      branch_name2    -> origin/branch_name2

.... dan seterusnya.

Saya pikir git fetch originjuga akan berhasil git remote update.


1
Keren, tapi mungkin lebih masuk akal untuk digunakan refs/remotes/bitbucket/*daripada refs/remotes/origin/*.
— kan

Terima kasih, benar-benar memperhatikan tentang konsistensi penamaan. Mungkin lebih masuk akal untuk mengubah bitbucket ke asalnya! Konvensi dan semua itu :)
— feargal

1
git fetch originmelakukan pekerjaan
— Dish

Jawaban:


110

The remotebagian juga menspesifikasikan mengambil aturan. Anda bisa menambahkan sesuatu seperti ini ke dalamnya untuk mengambil semua cabang dari remote:

fetch = +refs/heads/*:refs/remotes/origin/*

(Atau ganti origindengan bitbucket.)

Silakan baca di sini: 10.5 Git Internals - The Refspec


3
Ini memperbaiki masalah percabangan saya yang sedang berlangsung di Git yang saya alami selama berminggu-minggu. Tiba-tiba semua hal pembaruan jarak jauh git benar-benar mulai berfungsi. Terima kasih!
— PålOliver

2
Untuk beberapa alasan, itu terlihat seperti: fetch = +refs/heads/master:refs/remotes/origin/masterbagiku. Mengganti masterdengan *memperbaiki masalah saya.
— Sebastian Blask

2
Ini sangat berguna jika Anda telah mengubah klon dangkal menjadi tidak dangkal.
— Warpzit

@kan Tahukah Anda mengapa hal ini terkadang terjadi? Itu hanya terjadi pada saya ketika git clonesebuah proyek. Saya tidak ingat pernah melakukan sesuatu yang istimewa dengan git lokal saya.
— dotnetCarpenter

@dotnetCarpenter Tidak yakin ... tidak pernah terjadi pada saya secara tidak terduga. Apakah mungkin cloneitu terputus dan kemudian dilanjutkan? Atau ada hal lain yang mengakses repo secara bersamaan?
— kan

223

Perbarui remote Anda jika Anda masih belum melakukannya:

$ git remote update
$ git branch -r

1
Saya menggunakan klien GitHub di Win dan terkadang tidak memperbarui cabang jarak jauh. Baris pertama "git remote update" berfungsi dengan baik. Mudah & bersih
— Stefano Buora

setelah git remote updatesaya bisa melihat cabang baru di UI. Terima kasih
— Tinkaal Gogoi

Itu tidak membantu.
— dKab

Saya pikir saya sudah berhasil mengambil cabang tetapi hanya perlu melihatnya terdaftar dengan git branch -r. Di git-scm.com/docs/git-branch dikatakan "Opsi -r menyebabkan cabang pelacakan jarak jauh dicantumkan, dan opsi -a menampilkan cabang lokal dan jarak jauh". git remote updatemengambil semua cabang dari semua remote yang terdaftar di git remote -v.
— Rock Lee

Setelah menjalankan ini, saya dapat menjalankan git checkout origin/masterdan kemudian mencabangkan kepala yang terlepas itu ke cabang utama sayagit branch master; git checkout master
— Dfranc3373

37

Jika Anda mengkloning dengan --depthparameter, itu disetel .git/configuntuk tidak mengambil semua cabang, tetapi hanya master.

Anda cukup menghilangkan parameter atau memperbarui file konfigurasi dari

fetch = +refs/heads/master:refs/remotes/origin/master

untuk

fetch = +refs/heads/*:refs/remotes/origin/*

2
Terima kasih! Jawaban Anda sebenarnya memperbaiki masalah dengan mudah dan sepertinya cara yang benar untuk melakukannya. Tetapi Anda harus menambahkan bahwa file konfignya ada .git/config, sehingga orang dapat menemukannya.
— dotnetCarpenter

19

Saya memiliki masalah yang sama. Tampaknya solusi termudah adalah dengan menghapus remote, membacanya, dan mengambilnya.


1
Menghabiskan begitu banyak waktu untuk menemukan jawaban ini. Ini bekerja tanpa masalah. Terima kasih. :)
— kisanme

1
Bekerja untuk saya juga, cukup aneh bahwa ini menyelesaikannya
— CailinP

1
git remote -vakan menunjukkan remote Anda sehingga Anda bisa mendapatkan url, git remote rm originakan menghapusnya, git remote add origin <url>akan menambahkannya kembali.
— Siddhartha

Ini berhasil untuk saya. Saya memiliki submodul git yang entah bagaimana, tidak mengambil cabang jarak jauh selain master. Menghapus dan menambahkannya lagi menyelesaikannya.
— Zamrony P. Juhara

bekerja untuk saya, tapi sekarang saya mendapat peringatanwarning: ignoring broken ref refs/remotes/origin/HEAD
— dafnahaktana

8

Sayangnya, git branch -adan git branch -rjangan tidak menunjukkan semua cabang terpencil, jika Anda belum melaksanakan "git fetch".

git remote show originbekerja secara konsisten sepanjang waktu. Juga git show-refmenampilkan semua referensi di repositori Git. Namun, ini berfungsi seperti git branchperintah.


Berguna! bekerja untuk saya
— Sarjerao Ghadage
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.