Git ambil cabang jarak jauh

2261

Kolega saya dan saya sedang mengerjakan repositori yang sama. Kami telah membuatnya menjadi dua cabang, masing-masing secara teknis untuk proyek yang berbeda, tetapi mereka memiliki kesamaan, jadi kami kadang-kadang ingin berkomitmen kembali ke * masterdari branch.

Namun, saya punya branch. Bagaimana rekan saya bisa menarik cabang itu secara khusus?

Salah git clonesatu repositori tampaknya tidak membuat cabang secara lokal untuknya, meskipun saya dapat melihat mereka hidup tanpa kesulitan setelah dorongan di ujung saya.

Juga, ketika saya awalnya membuat cabang, saya lakukan -b checkout. Apakah itu membuat banyak perbedaan?

$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/discover
origin/master

$ git fetch origin discover
$ git checkout discover

Ini adalah perintah yang saya jalankan. Tapi itu pasti tidak berfungsi.

Saya ingin dapat memeriksa cabang itu dan kemudian mendorong dan melakukan kembali hanya perubahan cabang dari berbagai kolaborator atau workstation .

David
sumber
9
kemungkinan duplikat git checkout remote branch
Andrew Marshall
33
Saya menggunakan git fetch --all:, Kemudian untuk melihat semua cabang:, git branchLalu saya checkout cabang:git checkout nameofnewbranch
Jeff Mattson
Kemungkinan duplikat dari Bagaimana cara saya memeriksa cabang Git yang jauh?
DaveyDaveDave
6
git fetch origin discover:discover && git checkout discover
Gayan Weerakutti

Jawaban:

3062

Anda perlu membuat cabang lokal yang melacak cabang jarak jauh. Perintah berikut akan membuat cabang lokal bernama daves_branch , melacak asal cabang jarak jauh / daves_branch . Saat Anda mendorong perubahan, cabang jarak jauh akan diperbarui.

Untuk versi terbaru dari Git:

git checkout --track origin/daves_branch

--trackadalah singkatan untuk git checkout -b [branch] [remotename]/[branch]tempat [remotename] asal dalam kasus ini dan [cabang] dua kali sama, daves_branch dalam kasus ini.

Untuk Git 1.5.6.5 Anda membutuhkan ini:

git checkout --track -b daves_branch origin/daves_branch

Untuk Git 1.7.2.3 dan lebih tinggi, ini sudah cukup (mungkin sudah dimulai sebelumnya, tapi ini konfirmasi paling awal yang bisa saya temukan dengan cepat):

git checkout daves_branch

Perhatikan bahwa dengan versi Git terbaru, perintah ini tidak akan membuat cabang lokal dan akan menempatkan Anda dalam keadaan 'kepala terpisah'. Jika Anda ingin cabang lokal, gunakan--track opsi.

Detail lengkapnya ada di sini: 3.5 Git Branching - Remote Branches, Tracking Branches

ralphtheninja
sumber
134
"git fetch" untuk memastikan repo Anda diperbarui dengan referensi jarak jauh dan "git checkout --track asal / temukan" sudah cukup. Kemudian Anda dapat mengkomit ke cabang itu dan "git push" untuk menyinkronkan remote dengan perubahan Anda.
ralphtheninja
33
Saya mencoba ini dan mendapat "fatal: git checkout: jalur pembaruan tidak kompatibel dengan beralih cabang. Apakah Anda bermaksud untuk checkout 'hulu / pengembangan' yang tidak dapat diselesaikan sebagai komit?". Apakah saya melakukan sesuatu yang salah?
Neil Barnwell
42
Sepertinya git 1.5.6.5 membutuhkan ini sebagai gantinya: git checkout --track -b origin / daves_branch
Charlie
35
Ini membuat saya berantakan, itu membuat cabang lokal bernama origin / <branch> yang sekarang ambigu dengan asal cabang terpencil / <branch> dan saya tidak tahu bagaimana cara menyingkirkan cabang lokal yang gila!
Alan Moore
24
Anda perlu menambahkan nama cabang lokal secara eksplisit, jika tidak git akan membuat cabang lokal baru dengan path cabang lengkap, seperti yang dinyatakan @AlanMoore dan @ derekmx271 di atas:git checkout -b --track daves_branch origin/daves_branch
Mike Scott
961

Saya telah menggunakan fetchdiikuti oleh checkout...

git fetch <remote> <rbranch>:<lbranch>
git checkout <lbranch>

... di mana <rbranch>adalah remote cabang atau sumber ref dan <lbranch>adalah belum tidak ada cabang lokal atau tujuan ref Anda ingin melacak dan yang Anda mungkin ingin nama sama dengan cabang terpencil atau sumber ref. Ini dijelaskan di bawah opsi dalam penjelasan <refspec>.

Git sangat cerdas sehingga otomatis menyelesaikan perintah pertama jika saya tab setelah beberapa huruf pertama dari cabang jauh. Artinya, saya bahkan tidak harus menamai cabang lokal, Git secara otomatis menyalin nama cabang jarak jauh untuk saya. Terima kasih git!

Juga sebagai jawaban dalam posting Stack Overflow serupa ini menunjukkan, jika Anda tidak memberi nama cabang lokal fetch, Anda masih bisa membuatnya ketika Anda memeriksanya dengan menggunakan -bflag. Yaitu, git fetch <remote> <branch> diikuti dengan git checkout -b <branch> <remote>/<branch>melakukan persis sama dengan jawaban awal saya. Dan jelas, jika repositori Anda hanya memiliki satu remote, maka Anda bisa melakukannya git checkout <branch>setelahnya fetchdan itu akan membuat cabang lokal untuk Anda. Misalnya, Anda baru saja mengkloning repositori dan ingin memeriksa cabang tambahan dari jarak jauh.

Saya percaya bahwa beberapa dokumentasi untuk fetchmungkin telah disalin kata demi kata pull. Khususnya bagian tentang <refspec>di pilihan adalah sama. Namun, saya tidak percaya itu fetchakan pernah merge, sehingga jika Anda membiarkan sisi tujuan usus besar kosong, fetch seharusnya tidak melakukan apa-apa .

CATATAN: git fetch <remote> <refspec>kependekan git fetch <remote> <refspec>:yang karenanya tidak akan melakukan apa-apa, tetapi git fetch <remote> <tag>sama dengan git fetch <remote> <tag>:<tag>yang harus menyalin remote <tag>secara lokal.

Saya kira ini hanya membantu jika Anda ingin menyalin cabang jarak jauh secara lokal, tetapi tidak harus langsung memeriksanya. Kalau tidak, saya sekarang akan menggunakan jawaban yang diterima , yang dijelaskan secara rinci di bagian pertama dari deskripsi checkout dan kemudian di bagian opsi di bawah penjelasan --track, karena ini adalah one-liner. Ya ... semacam one-liner, karena Anda masih harus berlari git fetch <remote>dulu.

FYI: Urutan <refspecs>(sumber: tujuan) menjelaskan metode pre Git 1.7 yang aneh untuk menghapus cabang jarak jauh . Artinya, tidak mendorong apa pun ke refspec tujuan.

Mark Mikofski
sumber
8
Anda menganggap pengisian otomatis Git sudah diatur. code-worrier.com/blog/autocomplete-git
antonagestam
2
Ini berhasil bagi saya untuk mendapatkan kode jarak jauh ke cabang lokal. Namun itu tidak mendapatkan cabang lokal saya untuk melacak cabang terpencil.
Aknosis
1
Untuk beberapa alasan, sama git fetch remote branchsekali tidak menambahkan kepala cabang untuk saya, meskipun semua referensi diambil, jadi ketika saya mencoba mengikuti langkah-langkah dalam jawaban yang diterima, saya mendapatkan kesalahan itu pathspec did not match any file(s) known to git., tetapi rbranch:lbranchpendekatannya berhasil. Menariknya, itu juga mengambil semua tag yang dimulai dengan awalan yang sama, seperti itu adalah wildcard ( rbranch*).
haridsv
3
Nit: git tidak melakukan pelengkapan otomatis, itu adalah bash shell yang melakukannya.
mengesahkan
1
FWIW, saya pikir perbedaan antara jawaban ini dan jawaban yang diterima adalah bahwa yang ini memberitahu Anda untuk melakukan fetchperintah. Itu jawaban yang diterima masuk akal karena OP mencatat bahwa ia sudah melakukan pengambilan. Setidaknya itulah masalah yang saya hadapi.
tenor528
373

Jika Anda mencoba "checkout" cabang jarak jauh baru (yang hanya ada di jarak jauh, tetapi tidak secara lokal), inilah yang Anda perlukan:

git fetch origin
git checkout --track origin/<remote_branch_name>

Ini mengasumsikan Anda ingin mengambil dari asal . Jika tidak, ganti asal dengan nama jarak jauh Anda .

paneer_tikka
sumber
1
Bekerja untuk saya, saya belum mengambil cabang terpencil yang benar sehingga jawaban yang diterima terus gagal bagi saya dengan pesan yang membingungkan. +1
Nathan Hinchey
Biasanya, saya menggunakan git fetch, tetapi masalahnya adalah apa perbedaan antara git fetch dan git fetch asalnya?
Ping Woo
@ PingWoo Dengan anggapan bahwa cabang yang ingin Anda ambil berada di remote asal , keduanya git fetchdan git fetch remoteakan melakukan hal yang sama. Jika Anda perlu mengambil dari jarak jauh selain origin, Anda bisa melakukannya menggunakan git fetch <other_remote_name>. Situasi ini sangat jarang, hanya disebutkan di sini untuk kelengkapan.
paneer_tikka
1
Saya hampir membenturkan kepala ke PC mencoba semua solusi ini. Ternyata, saya salah ketik di nama cabang saya, konyol hehe.
Dev Yego
126

Untuk checkout myBranch yang ada dari jarak jauh dan bukan lokal - Ini berfungsi untuk saya:

git fetch --all
git checkout myBranch

Saya mendapat pesan ini:

Branch myBranch set up to track remote branch myBranch from origin
Switched to a new branch 'myBranch'
David
sumber
1
Dengan kata lain Anda tidak perlu menulis -t?
Andrew Samuelsen
4
Saya pikir ada kesalahan dalam jawaban ini. Saya awalnya melakukan perintah tanpa -tdan dapatkan You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by performing another checkout.karena tidak ada cabang lokal dengan nama yang sama. Saya harus menjalankan kembali dengan -tmemperbaiki.
stanri
1
Ini bekerja dengan baik untuk saya - kolega saya telah menambahkan cabang terpencil baru yang ingin saya tambahkan ke repo lokal saya. Saya terus mengambil tetapi tidak melihat cabang baru muncul secara lokal. Tidak menyadari bahwa saya bisa menjalankannya checkoutuntuk membuatnya. Terima kasih!
skwidbreth
2
tergantung pada versi git. Versi terbaru, seperti yang dikatakan di tempat lain di sini, hanya perlu git checkout <nama cabang asal>. HATI-HATI DENGAN NAMA LOKAL YANG SAMA vs CABANG REMOTE - mereka akan mengacaukan semuanya
semuanya
--alltidak pernah merupakan ide yang baik, karena itu akan mengunduh setiap file di setiap cabang. Ini akan membutuhkan lebih banyak waktu dan ruang. Lebih baik untuk lebih spesifik dengan nama cabang dan melakukan seperti ini
Sayang
53

Gunakan git branch -a(cabang lokal dan remote) atau git branch -r(hanya cabang jarak jauh) untuk melihat semua remote dan cabangnya. Anda kemudian dapat melakukan git checkout -t remotes/repo/branchke remote dan membuat cabang lokal.

Ada juga perintah git-ls-remote untuk melihat semua referensi dan tag untuk remote tersebut.

Daniel Lee
sumber
git checkout remotes/repo/branchmembuat checkout checkout mencari pathspec, bukan repo jarak jauh.
Erin
1
Ya, apakah mungkin untuk melakukan checkout cabang pada repo jarak jauh? Jelas (atau mungkin tidak begitu jelas), remote pertama-tama diambil sehingga Anda memilikinya secara lokal. Buku git memiliki bagian yang bagus tentang mereka: git-scm.com/book/en/Git-Branching-Remote-Branches
Daniel Lee
43

Judul dan pertanyaannya membingungkan:

  • Git ambil cabang jarak jauh
  • bagaimana rekan saya bisa menarik cabang itu secara khusus.

Jika pertanyaannya adalah, bagaimana saya bisa mendapatkan cabang jarak jauh untuk bekerja, atau bagaimana saya bisa checkout cabang jauh?, solusi yang lebih sederhana adalah:

Dengan Git (> = 1.6.6) Anda dapat menggunakan:

git checkout <branch_name>

Jika lokal <branch_name>tidak ditemukan, tetapi ada cabang pelacakan di persis satu remote dengan nama yang cocok, perlakukan sebagai setara dengan:

git checkout -b <branch_name> --track <remote>/<branch_name>

Lihat dokumentasi untuk checkout Git

Untuk temanmu:

$ git checkout discover
Branch discover set up to track remote branch discover
Switched to a new branch 'discover'
Guillaume Vincent
sumber
Guillaume terima kasih! Saya hanya menggunakan perintah ini dan menulis posting tentang hal itu untuk menggambarkan kasus saya yang sebenarnya: leniel.net/2014/05/…
Leniel Maccaferri
<! - checkout git <remote-branch-name> -> berfungsi seperti yang diharapkan, Terima kasih Guillaume!
Sachidananda Naik
36

Cara termudah untuk melakukannya, setidaknya untuk saya:

git fetch origin <branchName> # Will fetch the branch locally
git checkout <branchName> # To move to that branch
James Rochabrun
sumber
1
Tidak membawa cabang lain
Benjamin Harel
7
@BenjaminHarel pertanyaannya mengatakan "ambil cabang jauh" tidak semua cabang. untuk itu ikuti ini mungkin bermanfaat bagi Anda stackoverflow.com/questions/10312521/…
James Rochabrun
2
Setelah menggunakan fetchperintah ini cabang yang diperlukan akan tersedia di mesin lokal. git checkout -b 'your_branch' origin/'remote branch'diperlukan untuk checkout cabang ini.
Abhijeet
30

Menggunakan:

git checkout -b serverfix origin/serverfix

Ini adalah operasi yang cukup umum sehingga Git menyediakan --tracksteno:

git checkout --track origin/serverfix

Sebenarnya, ini sangat umum sehingga bahkan ada jalan pintas untuk jalan pintas itu. Jika nama cabang yang Anda coba checkout (a) tidak ada dan (b) persis cocok dengan nama hanya pada satu remote, Git akan membuat cabang pelacakan untuk Anda:

git checkout serverfix

Untuk mengatur cabang lokal dengan nama yang berbeda dari cabang jarak jauh, Anda dapat dengan mudah menggunakan versi pertama dengan nama cabang lokal yang berbeda:

git checkout -b sf origin/serverfix

Sekarang, cabang lokal Anda sfakan secara otomatis menarik origin/serverfix.

Sumber: Pro Git, Edisi ke-2 , ditulis oleh Scott Chacon dan Ben Straub (dipotong untuk dibaca)

ManuelSchneid3r
sumber
Tulisan
25

Dengan perintah sederhana ini:

git checkout -b 'your_branch' origin/'remote branch'
Karthik damodara
sumber
18

Untuk mengambil cabang yang ada di remote, cara paling sederhana adalah:

git fetch origin branchName
git checkout branchName

Anda dapat melihat apakah sudah ada pada jarak jauh dengan:

git branch -r

Ini akan mengambil cabang jarak jauh ke lokal Anda dan secara otomatis akan melacak cabang jarak jauh.

Harshit Agarwal
sumber
2
Bagaimana pertanyaan ini tidak memiliki lebih banyak upvotes? Saya bisa saja salah tetapi ini tampaknya berhasil, mengambil cabang yang tidak saya miliki di lokal dari jarak jauh ...
Nicholas Petersen
15

Yang membantu saya adalah

1) Untuk melihat semua cabang jarak jauh yang tersedia (mis. 'Remote-branch-name')

git branch -r

2) Buat cabang lokal menggunakan nama cabang jarak jauh

git fetch && git checkout 'remote-branch-name'
Arlan T
sumber
1
Apa yang terjadi ketika Anda menjalankan perintah git pushtanpa argumen lain? Apakah cabang lokal bernama remote-branch-namesecara otomatis dikaitkan dengan (pelacakan ke) cabang jarak jauh bernama origin/remote-branch-name. Atau apakah Anda perlu menjalankangit push -u origin remote-branch-name
PatS
1
ini akan menyebabkan HEAD terlepas
Akin Hwan
15

Anda dapat mengambil dan checkout cabang jarak jauh dalam satu kesempatan juga:

git fetch && git checkout the-branch-name
Kumar Sambhav
sumber
14
git fetch

git branch -r

git checkout <branch_name>
John Rodriguez
sumber
13

saya mengetik

git checkout <branch_name>

dan mendapatkan

Branch <branch_name> set up to track remote branch <branch_name> from origin.
Switched to a new branch '<branch_name>'
Guillaume Guillaume
sumber
dari dokumentasi checkout git: Jika <branch_name> tidak ditemukan tetapi ada cabang pelacakan di persis satu remote dengan nama yang cocok, perlakukan setara dengan:git checkout -b <branch_name> --track <remote>/<branch_name>
Guillaume Vincent
11

Kadang-kadang Anda diminta untuk tidak mengutak-atik cabang master dan hanya bekerja cabang terpencil (seperti yang diminta). Jadi yang Anda butuhkan adalah cabang jarak jauh.

Jadi untuk mengkloning cabang jarak jauh saja (tanpa master), lakukan ini

git clone url --branch remote_branch_name

di mana, remote_branch_name adalah nama cabang jarak jauh

Sebagai contoh,

git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git --branch v3.15

Ini akan memastikan bahwa Anda mengkloning cabang jarak jauh ke cabang lokal Anda dengan nama cabang jarak jauh.

Sekarang jika Anda mengkomit kode Anda dan mendorong, kode akan dikirimkan ke cabang itu saja.

ganezdragon
sumber
Terkait: Bagaimana cara mengkloning satu cabang di Git? - "git 1.7.10 (April 2012) sebenarnya memungkinkan Anda untuk mengkloning hanya satu cabang:"
Peter Mortensen
11

[Jawaban cepat]

Ada banyak alternatif, dan favorit saya adalah:

- Alternatif 1:

git fetch --all
git checkout YourBranch

Menggunakan alternatif ini menggunakan cabang yang ada dari jarak jauh, tetapi tidak di lokal Anda.

- Alternatif 2:

git checkout -b 'YourBranch' origin/'YourRemote'

Mungkin, ini adalah cara paling sederhana.

Javier C.
sumber
9

Katakanlah remote Anda adalah [email protected] dan Anda menginginkan cabang random_branch-nya. Prosesnya harus sebagai berikut:

  1. Pertama periksa daftar remote Anda dengan

    git remote -v

  2. Jika Anda tidak memiliki remote [email protected] di output perintah di atas, Anda akan menambahkannya dengan

    git remote add xyz [email protected]

  3. Sekarang Anda dapat mengambil konten dari remote itu

    git fetch xyz

  4. Sekarang checkout cabang dari remote itu

    git checkout -b my_copy_random_branch xyz/random_branch

  5. Periksa daftar cabang dengan

    git branch -a

Cabang lokal my_copy_random_branch akan melacak cabang random_branch dari remote Anda.

zafar142003
sumber
8

git fetch --all & git checkout <branch name>

Jerome Anthony
sumber
7

git fetch && git checkout <your friend's branch name> harus melakukan trik

tambakoo
sumber
7

Saya ingin memberi Anda perintah satu-liner untuk mengambil semua cabang jarak jauh ke lokal Anda dan beralih ke cabang lokal yang baru Anda buat:

git fetch && git checkout discover

Setelah menjalankan perintah di atas, Anda akan mendapatkan pesan di bawah ini:

Switched to a new branch 'discover'
Branch discover set up to track remote branch discover from origin.

Baris pertama menyatakan bahwa beralih ke cabang baru - mengapa baru? Sudah ada di remote!

Tetapi sebenarnya Anda harus membuatnya secara lokal juga. Cabang diambil dari indeks jarak jauh dan dibuat secara lokal untuk Anda.

Ini discoveradalah cabang baru yang dibuat dari cabang jarak jauh repositori Andadiscover .

Tetapi baris kedua memberi lebih banyak informasi daripada yang pertama yang memberi tahu kita bahwa:

Cabang kami disetel untuk melacak cabang jarak jauh dengan nama yang sama.

Meskipun git fetch mengambil semua cabang ke lokal. Tetapi jika Anda git branchmengejarnya, Anda hanya akan melihat mastercabang di lokal. Mengapa ?

Karena untuk setiap cabang yang Anda miliki di remote Anda harus membuatnya secara lokal juga, untuk melacaknya git checkout <branchname>seperti yang telah kami lakukan pada contoh di atas.

Setelah menjalankan git checkoutperintah, Anda dapat menjalankan git branch, dan sekarang Anda dapat melihat kedua cabang:

  1. master dan 2. temukan di daftar lokal Anda.
Haritsinh Gohil
sumber
7

Jika Anda ingin mengambil semua cabang jarak jauh, ketikkan saja:

git fetch --all
Ishwor Khanal
sumber
5

Coba saja:

git pull origin your_branch_name
Rizo
sumber
2
Rizo, git pull asal branch_name harus menjadi solusi terbaik. Anda adalah satu-satunya orang yang memposting ini sebagai solusi dan itu berhasil untuk saya. Ini berfungsi karena akan memperbarui cabang Anda dengan cabang master. sederhana dan tidak rumit.
Ian Poston Framer
3
masalah dengan ini adalah bahwa ia akan mencoba untuk menggabungkan cabang jarak jauh dengan cabang LANCAR Anda, yang bukan cabang jarak jauh (karena itu baru untuk repo lokal Anda)
Z. Khullah
Ini akan bergabung ke cabang Anda saat ini.
Eem Jee
4

Jika Anda memiliki repositori yang diklon dengan --depth 1maka banyak perintah yang terdaftar tidak akan berfungsi. Sebagai contoh, lihat di sini

% git clone --depth 1 https://github.com/repo/code
Cloning into 'code'...
cd code
remote: Counting objects: 1778, done.
remote: Compressing objects: 100% (1105/1105), done.
remote: Total 1778 (delta 87), reused 1390 (delta 58), pack-reused 0
Receiving objects: 100% (1778/1778), 5.54 MiB | 4.33 MiB/s, done.
Resolving deltas: 100% (87/87), done.
Checking connectivity... done.
Checking out files: 100% (1215/1215), done.
% cd code
% git checkout other_branch
error: pathspec 'other_branch' did not match any file(s) known to git.
% git fetch origin other_branch
remote: Counting objects: 47289, done.
remote: Compressing objects: 100% (15906/15906), done.
remote: Total 47289 (delta 30151), reused 46699 (delta 29570), pack-reused 0
Receiving objects: 100% (47289/47289), 31.03 MiB | 5.70 MiB/s, done.
Resolving deltas: 100% (30151/30151), completed with 362 local objects.
From https://github.com/repo/code
 * branch            other_branch-> FETCH_HEAD
% git checkout other_branch
error: pathspec 'other_branch' did not match any file(s) known to git.
%

Dalam hal ini saya akan menutup repositori, tetapi mungkin ada teknik lain misalnya git clone dangkal (clone --depth) merindukan cabang terpencil

Colin D
sumber
3

Jika Anda sudah tahu cabang jarak jauh Anda seperti itu ...

git remote
=> One
=> Two

dan Anda tahu nama cabang yang ingin Anda checkout, misalnya, br1.2.3.4 , lalu lakukan

git fetch One
=> returns all meta data of remote, that is, the branch name in question.

Yang tersisa hanyalah checkout cabang

git checkout br.1.2.3.4

Kemudian buatlah cabang baru darinya.

SoEzPz
sumber
3

Langkah-langkahnya adalah sebagai berikut;

  1. git fetch originatau git fetch --all, ini akan mengambil semua cabang jarak jauh ke lokal Anda dan kemudian ini opsi kedua yang dapat Anda proses.

  2. git checkout --track origin/<The_remote_branch you want to switch over>

Kemudian kerjakan cabang ini dan Anda dapat memverifikasi apakah Anda berada di cabang itu atau tidak dengan mengetik

git branch

Ini menampilkan cabang Anda saat ini.

Sam
sumber
2

git branch <name> --track origin/<name>

Chris F Carroll
sumber
2

Periksa .git/configfile Anda , terutama pelacakan apa yang ada pada pengambilan untuk remote itu.

[remote "randomRemote"]
    url = [email protected]:someUser/someRepo.git
    fetch = +refs/heads/*:refs/remotes/randomRemote/*

Jika sudah heads/*menunjuk ke randomRemote/*, ketika Anda menjalankan git fetch randomRemote, itu akan mengambil semua cabang.

Maka Anda bisa checkout cabang itu.

Jika tidak,

  1. Anda perlu menambahkan cabang jarak jauh ke pelacakan menggunakan ini. Periksa .git/configsetelah Anda menjalankan ini. Kamu akan mengerti.

    git remote set-branches --add randomRemote randomBranch
    
  2. Lari git fetch randomRemote. Ini akan mengambil cabang jarak jauh.

  3. Sekarang kamu bisa lari git checkout randomBranch.

Vamshi Suram
sumber
1

Anda menggunakan 'git pull' untuk menjaga cabang Anda terpisah. Saya akan menggunakan repositori dan nama cabang yang sebenarnya untuk membantu karena 'lbranch' dan 'rbranch' sulit untuk diuraikan.

Mari kita gunakan:

  • myteam.unfuddle.com = server Git jarak jauh
  • tlc = Batalkan akun proyek di mana repositori ada
  • daves_branch = nama cabang jarak jauh

    Anda, atau kolega mana pun, dapat menjalankan ini hanya untuk menarik cabang Anda, tidak peduli berapa banyak cabang yang ada:

    git init
    git pull [email protected]:myteam/tlc daves_branch:refs/remotes/origin/daves_branch
    
  • Andrew
    sumber
    0

    Perintah sederhana, git checkout remote_branch_nameakan membantu Anda membuat cabang lokal yang memiliki semua perubahan di cabang jarak jauh.

    Sijeesh
    sumber
    -2
    git checkout -b branch_name
    git pull remote_name branch_name
    
    Leon
    sumber
    3
    Sementara cuplikan ini mungkin menjawab pertanyaan, lebih baik menyertakan beberapa penjelasan tentang apa yang dilakukannya dan bagaimana perbedaannya dari jumlah jawaban yang sangat besar yang sudah ada di sini.
    DaveyDaveDave
    2
    Saya pribadi tidak suka opsi ini. Karena jika Anda membuat cabang baru dari Master dan kemudian menarik data dari cabang jarak jauh, cabang jarak jauh itu mungkin atau mungkin tidak ada di halaman yang sama dengan master dan mungkin mengundang beberapa pembaruan kode yang tidak perlu
    zeetit
    Beberapa penjelasan akan diurutkan.
    Peter Mortensen