Bagaimana cara memeriksa cabang git jarak jauh?

Seseorang mengklik test cabang bernama dengan git push origin test ke dalam repositori umum. Saya melihat cabang dengan git branch -r .

Sekarang saya mencoba untuk menguji tes cabang jarak jauh.

Saya mencoba:

  • git checkout test yang tidak melakukan apa-apa

  • git checkout origin/test memberi * (no branch) . Ini membingungkan. Bagaimana saya bisa berada di "no branch"?

Bagaimana cara memeriksa cabang git jarak jauh?

5758
23 нояб. ditetapkan oleh Juri Glass pada 23 November 2009-11-23 17:23 '09 pada 17:23 2009-11-23 17:23
@ 26 jawaban

Segarkan

Jawaban Yakub sebenarnya meningkatkan itu. Dengan versi Git ≥ 1.6.6 dengan satu jarak jauh, Anda cukup:

 git fetch git checkout test 

Sebagai pengguna masukomi mencatat dalam komentar, git checkout test TIDAK akan bekerja di git modern jika Anda memiliki beberapa konsol. Dalam hal ini, gunakan

 git checkout -b test <name of remote>/test 

atau steno

 git checkout -t <name of remote>/test 

Jawaban lama

Sebelum Anda dapat memulai pekerjaan lokal dengan cabang jarak jauh, Anda harus mendapatkannya, seperti yang ditunjukkan dalam jawaban di bawah ini.

Untuk mendapatkan cabang, Anda hanya perlu:

 git fetch origin 

Ini akan memberi Anda semua cabang terpencil. Anda dapat melihat cabang yang tersedia untuk dipesan dengan:

 git branch -v -a 

Sekarang setelah Anda memiliki cabang yang jauh, Anda perlu memeriksa cabang yang Anda minati dengan memberi Anda copy pekerjaan lokal:

 git checkout -b test origin/test 
7947
23 нояб. Jawabannya diberikan hallski 23 Nov. 2009-11-23 17:26 '09 pukul 17:26 2009-11-23 17:26

Sidenote: Dengan Git modern (> = 1.6.6 ) Anda hanya dapat menggunakan

 git checkout test 

(perhatikan bahwa ini adalah 'uji' bukan 'asal / uji') untuk mengeksekusi DWIM -mery ajaib dan buatkan untuk Anda 'tes' cabang lokal yang upstream akan menjadi jejak jarak jauh "asal / uji".

border=0

Output * (no branch) di git branch berarti bahwa Anda berada di cabang yang tidak disebutkan namanya dalam kondisi yang disebut "HEAD terputus" (HEAD merujuk >

 git checkout -b test HEAD 
1147
24 нояб. Jawaban diberikan oleh Jakub Narębski 24 November 2009-11-24 03:17 '09 pada 3:17 2009-11-24 03:17

Dalam hal ini, Anda mungkin ingin membuat cabang test lokal yang melacak cabang test jarak jauh:

 $ git branch test origin/test 

Di git versi sebelumnya git Anda membutuhkan opsi --track eksplisit, tetapi ini adalah default sekarang saat Anda bercabang cabang jauh.

508
23 нояб. jawabannya diberikan ndim 23 Nov. 2009-11-23 17:27 '09 pada 17:27 2009-11-23 17:27

Jawaban yang diterima tidak berhasil untuk Anda?

Meskipun jawaban pertama dan yang dipilih secara teknis benar, ada kemungkinan bahwa Anda belum menerima semua objek dan tautan dari repositori jarak jauh. Jika demikian, Anda akan mendapatkan kesalahan berikut:

 $ git checkout -b remote_branch origin/remote_branch 

fatal: git checkout: jalur pembaruan tidak kompatibel dengan beralih cabang.
Apakah Anda bermaksud untuk memeriksa "origin / remote_branch", yang tidak dapat diselesaikan sebagai komit?

Solusi

Jika Anda menerima pesan ini, Anda harus terlebih dahulu membuat git fetch origin , di mana origin adalah nama repositori jarak jauh sebelum menjalankan git checkout remote_branch . Berikut ini adalah contoh lengkap dengan jawabannya:

 $ git fetch origin remote: Counting objects: 140, done. remote: Compressing objects: 100% (30/30), done. remote: Total 69 (delta 36), reused 66 (delta 33) Unpacking objects: 100% (69/69), done. From https://github.com/githubuser/repo-name e6ef1e0..5029161 develop -> origin/develop * [new branch] demo -> origin/demo d80f8d7..359eab0 master -> origin/master $ git checkout demo Branch demo set up to track remote branch demo from origin. Switched to a new branch 'demo' 

Seperti yang Anda lihat, ketika kami menjalankan git fetch origin cabang-cabang terpencil yang diekstrak, kami belum mengonfigurasi pelacakan pada mesin lokal kami. Dari sana, karena kami sekarang memiliki tautan ke cabang jarak jauh, kami cukup menjalankan git checkout remote_branch , dan kami akan mendapatkan keuntungan dari pelacakan jarak jauh.

421
07 дек. Balas diberikan oleh Corey Ballou 07 Des 2012-12-07 23:52 '12 pada 11:52 2012-12-07 23:52

Saya mencoba solusi di atas, tetapi tidak berhasil. Cobalah, ini berfungsi:

 git fetch origin 'remote_branch':'local_branch_name' 

Ini akan mengarah ke cabang jarak jauh dan membuat cabang lokal baru (jika belum ada) dengan nama local_branch_name dan melacaknya dihapus.

208
18 окт. balasan diberikan oleh Sahil kalra 18 Oktober. 2013-10-18 08:55 '13 pada 8:55 2013-10-18 08:55

Ini akan menjadi DWIM untuk nama jarak jauh yang tidak disebutkan namanya ( dokumentasi ):

 $ git checkout -t remote_name/remote_branch 

Untuk menambahkan remote control baru, Anda perlu melakukan hal berikut:

 $ git remote add remote_name location_of_remote $ git fetch remote_name 

Yang pertama memberi tahu Git akses jarak jauh, yang kedua mendapat komitmen.

104
28 апр. jawab tacaswell 28 Apr 2012-04-28 01:37 '12 pada 1:37 2012-04-28 01:37

Gunakan:

 git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME> 

Jawaban lain tidak bekerja dengan Git modern dalam kasus jinak saya. Anda mungkin perlu melakukan migrasi terlebih dahulu jika cabang jarak jauh baru, tetapi saya belum memeriksa kasus ini.

98
21 февр. Jawabannya diberikan oleh matanster pada 21 Februari. 2016-02-21 13:58 '16 pada pukul 13:58 2016-02-21 13:58

Yah , jawabannya sederhana ... Pada dasarnya Anda melihat cabang, tetapi Anda belum memiliki salinan lokal! ...

Anda harus fetch cabang ...

Anda cukup menerima dan kemudian memesan di cabang menggunakan perintah satu baris di bawah ini untuk melakukan ini:

 git fetch  git checkout test 

Saya juga membuat gambar di bawah ini sehingga Anda dapat membagikan perbedaan Anda, lihat cara fetch bekerja dan cara pull :

2019

05 сент. Jawabannya diberikan Alireza 05 Sep. 2017-09-05 17:20 '17 pukul 17.20 2017-09-05 17:20

Untuk mengkloning repositori Git, jalankan:

 git clone <either ssh url /http url> 

Perintah di atas memeriksa semua cabang, tetapi hanya cabang master akan diinisialisasi. Jika Anda ingin memeriksa cabang lain, ikuti >

 git checkout -t origin/future_branch (for example) 

Perintah ini memeriksa cabang jarak jauh, dan nama cabang lokal Anda sama dengan cabang jarak jauh.

Jika Anda ingin mengganti nama cabang lokal di checkout:

 git checkout -t -b enhancement origin/future_branch 

Sekarang nama cabang lokal Anda adalah enhancement , tetapi nama cabang jarak jauh Anda adalah future_branch .

Dokumentasi

48
21 янв. jawabannya diberikan Madhan Ayyasamy 21 Jan 2013-01-21 13:04 '13 pada 13:04 2013-01-21 13:04

Anda bisa mencobanya

 git fetch remote git checkout --track -b local_branch_name origin/branch_name 

atau

 git fetch git checkout -b local_branch_name origin/branch_name 
31
24 марта '14 в 16:11 2014-03-24 16:11 jawabannya diberikan uma 24 Maret, '14 pukul 16:11 2014-03-24 16:11

Pertama, yang perlu Anda lakukan:

git fetch # Jika Anda tidak tahu nama cabang

 git fetch origin branch_name 

Kedua, Anda dapat memeriksa cabang jarak jauh ke lokal Anda:

 git checkout -b branch_name origin/branch_name 

-b akan membuat cabang baru dalam nama yang ditentukan dari cabang jarak jauh yang dipilih.

27
18 мая '17 в 16:55 2017-05-18 16:55 Jawaban diberikan oleh Mohideen ibn Mohammed pada 18 Mei 17 jam 16:55 2017-05-18 16:55

Tim

 git fetch --all git checkout -b <ur_new_local_branch_name> origin/<Remote_Branch_Name> 

sama

  git fetch --all 

dan kemudian

  git checkout -b fixes_for_dev origin/development 

Keduanya akan membuat latest fixes_for_dev dari development

25
21 апр. jawabannya diberikan oleh sreekumar 21 Apr 2016-04-21 22:10 '16 jam 10:10 malam 2016-04-21 22:10

Saya menggunakan perintah berikut:

 git checkout --track origin/other_remote_branch 
23
06 сент. jawabannya diberikan priyankvex 06 sept . 2017-09-06 17:41 '17 pada jam 17:41 2017-09-06 17:41

Jika cabang ada pada sesuatu selain origin jarak jauh, saya ingin melakukan hal berikut:

 $ git fetch $ git checkout -b second/next upstream/next 

Ini akan memeriksa cabang next pada server upstream jarak jauh di cabang lokal bernama second/next . Ini berarti bahwa jika Anda sudah memiliki cabang lokal bernama berikutnya, itu tidak akan konflik.

 $ git branch -a * second/next remotes/origin/next remotes/upstream/next 
22
01 марта '13 в 13:00 2013-03-01 13:00 Jawabannya diberikan oleh Kris pada 01 Maret 2013 di 13:00 2013-03-01 13:00

git fetch git checkout your-branch-name

15
26 марта '14 в 10:00 2014-03-26 10:00 jawabannya diberikan kepada Inder Kumar Rathore pada 26 Maret '14 pukul 10:00 2014-03-26 10:00

git branch -r mengatakan bahwa nama objek tidak valid karena nama cabang ini tidak ada dalam daftar cabang Git lokal. Perbarui daftar cabang lokal Anda dari sumber dengan:

 git remote update 

Dan kemudian coba lagi untuk memeriksa cabang jarak jauh.

Ini berhasil untuk saya.

Saya percaya bahwa git fetch menarik semua cabang jarak jauh, yang tidak diinginkan oleh poster aslinya.

15
06 июня '13 в 15:21 2013-06-06 15:21 jawabannya diberikan oleh webdevguy 06 Juni '13 pada 15:21 2013-06-06 15:21

tidak ada jawaban yang bekerja untuk saya. itu berhasil:

git checkout -b feature/branch remotes/origin/feature/branch

14
10 июля '18 в 5:11 2018-07-10 05:11 Jawaban diberikan oleh brianyang pada 10 Juli '18 jam 5:11 pagi 2018-07-10 05:11

Perintah git remote show <origin name> akan menampilkan daftar semua cabang (termasuk cabang yang tidak dilacak). Kemudian Anda dapat menemukan nama cabang jarak jauh yang ingin Anda ekstrak.

Contoh:

 $ git remote show origin 

Gunakan >

 git fetch <origin name> <remote branch name>:<local branch name> git checkout <local branch name > (local branch name should the name that you given fetching) 

Contoh:

 $ git fetch origin test:test $ git checkout test 
11
07 янв. Jawabannya diberikan oleh Thushan 07 Jan 2018-01-07 16:12 '18 jam 16:12 2018-01-07 16:12

Cowok dan cewek lain memberi solusi, tapi mungkin saya bisa memberi tahu Anda alasannya.

git check test yang tidak melakukan apapun

Does nothing tidak sama dengan itu doesn't work , jadi saya kira ketika Anda memasukkan 'git checkout test' di terminal Anda dan tekan tombol enter, pesan tidak muncul dan tidak ada kesalahan terjadi. Apakah saya benar

Jika jawabannya ya, saya bisa memberi tahu Anda alasannya.

Alasannya adalah bahwa di pohon Anda ada file (atau folder) bernama "test".

Ketika git checkout xxx tahu,

  • git pertama-tama melihat xxx sebagai nama cabang, tetapi tidak ada pengujian bernama cabang.
  • Kemudian Git berpikir bahwa xxx adalah caranya, dan untungnya (atau, sayangnya), ada file bernama test. Oleh karena itu, git checkout xxx berarti membatalkan modifikasi apa pun dalam file xxx .
  • Jika tidak ada file dengan nama xxx , maka Git akan mencoba membuat xxx sesuai dengan beberapa aturan. Salah satu aturan adalah membuat cabang dengan nama xxx , jika remotes/origin/xxx ada.
8
10 июля '17 в 10:45 2017-07-10 10:45 jawabannya diberikan oldman 10 Juli '17 jam 10:45 2017-07-10 10:45

Saya terjebak dalam situasi di mana error: pathspec 'desired-branch' did not match any file(s) known to git. untuk semua penawaran di atas. Saya di git versi 1.8.3.1.

Jadi itu berhasil untuk saya :

 git fetch origin desired-branch git checkout -b desired-branch FETCH_HEAD 

Penjelasan untuk ini adalah saya perhatikan bahwa ketika mengambil cabang jarak jauh, itu dipilih di FETCH_HEAD:

 $ git fetch origin desired-branch From github.com:MYTEAM/my-repo * branch desired-branch -> FETCH_HEAD 
7
11 окт. balas alisa 11 Okt 2018-10-11 00:52 '18 pada 0:52 2018-10-11 00:52

Jalankan saja git checkout dengan nama cabang jarak jauh. Git akan secara otomatis membuat cabang lokal yang melacak remote:

 git fetch git checkout test 

Namun, jika nama cabang ini ditemukan di lebih dari satu konsol, itu tidak akan berfungsi, karena Git tidak tahu apa yang harus digunakan. Dalam hal ini, Anda dapat menggunakan:

 git checkout --track origin/test 

atau

 git checkout -b test origin/test 

Di 2.19, Git memeriksa konfigurasi checkout.defaultRemote , di mana, ketika menghapus ambiguitas seperti itu, nilai kendali jarak jauh default ditunjukkan.

6
13 сент. jawabannya diberikan oleh Eugene Yarmash pada 13 September . 2018-09-13 15:21 '18 pada 15:21 2018-09-13 15:21

Untuk mendapatkan cabang yang baru dibuat

 git fetch 

Pindah ke cabang lain

 git checkout BranchName 
6
15 марта '18 в 11:49 2018-03-15 11:49 jawabannya diberikan oleh Hasib Kamal pada 15 Maret '18 pukul 11:49 2018-03-15 11:49

Anda dapat mulai melacak semua cabang yang dihapus dengan skrip bash berikut:

 #!/bin/bash git fetch --all for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'` do git branch -f --track "$branch" "origin/$branch" done 

Ini juga versi single-line:

 git fetch --all; for branch in `git branch -r --format="%(refname:short)" | sed 's/origin\///'`; do git branch --track "$branch" "origin/$branch" ; done ; 
6
11 авг. Jawabannya diberikan oleh OzzyCzech 11 Agustus. 2017-08-11 15:06 '17 pada 15:06 2017-08-11 15:06

Ikuti perintah ini untuk membuat folder kosong. Masukkan dan gunakan perintah berikut:

 saifurs-Mini:YO-iOS saifurrahman$ git clone your_project_url Cloning into 'iPhoneV1'... remote: Counting objects: 34230, done. remote: Compressing objects: 100% (24028/24028), done. remote: Total 34230 (delta 22212), reused 15340 (delta 9324) Receiving objects: 100% (34230/34230), 202.53 MiB | 294.00 KiB/s, done. Resolving deltas: 100% (22212/22212), done. Checking connectivity... done. saifurs-Mini:YO-iOS saifurrahman$ cd iPhoneV1/ saifurs-Mini:iPhoneV1 saifurrahman$ git checkout 1_4_0_content_discovery Branch 1_4_0_content_discovery set up to track remote branch 1_4_0_content_discovery from origin. Switched to a new branch '1_4_0_content_discovery' 
2
01 янв. jawabannya diberikan oleh Mehedi Hasan 01 Jan 2016-01-01 13:31 '16 pada 13:31 2016-01-01 13:31

Dapatkan asal dan periksa cabang.

 git fetch origin  git checkout branch_name 
1
21 мая '18 в 14:33 2018-05-21 14:33 jawabannya diberikan Pranav 21 Mei '18 pukul 14:33 2018-05-21 14:33

Jika nama cabang jarak jauh dimulai dengan karakter khusus, Anda perlu menggunakan tanda kutip tunggal dalam perintah checkout, jika tidak git tidak akan tahu cabang mana yang sedang Anda bicarakan.

Misalnya, saya mencoba mengekstrak cabang jarak jauh bernama #9773 tetapi perintahnya tidak berfungsi sebagaimana mestinya, seperti yang ditunjukkan pada gambar di bawah ini:

2019

07 нояб. jawabannya diberikan Ulysses Alves 07 nov. 2018-11-07 14:17 '18 pukul 14:17 2018-11-07 14:17

Pertanyaan lain tentang tag atau Ajukan Pertanyaan