Pertanyaan Bagaimana cara memeriksa cabang Git jarak jauh?


Seseorang mendorong cabang yang disebut test dengan git push origin test ke repositori bersama. Saya bisa melihat cabang dengan git branch -r.

Sekarang saya mencoba memeriksa remote test cabang.

Saya sudah mencoba:

  • git checkout test yang tidak melakukan apa-apa

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

Bagaimana cara memeriksa cabang Git jarak jauh?


5300
2017-11-23 14:23


asal


Jawaban:


Memperbarui

Jawaban Jakub sebenarnya meningkatkan ini. Dengan versi Git ≥ 1.6.6, Anda cukup melakukan:

git fetch
git checkout test

(Pengguna masukomi menunjukkan di bawah itu git checkout test TIDAK akan bekerja di git modern jika Anda memiliki beberapa remote. Dalam hal ini digunakan git checkout -b test <name of remote>/test).

Jawaban Lama

Sebelum Anda dapat mulai bekerja secara lokal di cabang jarak jauh, Anda harus mengambilnya seperti yang disebutkan dalam jawaban di bawah ini.

Untuk mengambil cabang, Anda hanya perlu:

git fetch origin

Ini akan mengambil semua cabang jarak jauh untuk Anda. Anda dapat melihat cabang-cabang yang tersedia untuk pembayaran dengan:

git branch -v -a

Dengan cabang-cabang terpencil di tangan, Anda sekarang perlu memeriksa cabang yang Anda minati, memberi Anda copy pekerjaan lokal:

git checkout -b test origin/test

7346
2017-11-23 14:26



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

git checkout test

(perhatikan bahwa itu adalah 'test' bukan 'origin / test') untuk melakukan magis DWIM-menciptakan dan membuat 'uji' cabang lokal untuk Anda, yang mana upstream akan menjadi asal / uji cabang pelacakan jarak jauh.


Itu * (no branch) di git branch output berarti bahwa Anda berada di cabang tanpa nama, yang disebut "terpisah HEAD" negara (HEAD poin langsung untuk melakukan, dan bukan referensi simbolis ke beberapa cabang lokal). Jika Anda membuat beberapa commit di cabang tanpa nama ini, Anda selalu dapat membuat cabang lokal dari commit saat ini:

git checkout -b test HEAD

1088
2017-11-24 00:17



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

$ git branch test origin/test

Di versi sebelumnya dari git, Anda membutuhkan eksplisit --track pilihan, tetapi itu adalah default sekarang ketika Anda bercabang cabang terpencil.


475
2017-11-23 14:27



Jawaban yang diterima tidak bekerja untukmu?

Sedangkan jawaban pertama dan yang dipilih secara teknis benar, ada kemungkinan Anda belum mengambil semua objek dan referensi dari repositori jarak jauh. Jika itu masalahnya, Anda akan menerima galat berikut:

$ git checkout -b remote_branch origin/remote_branch

fatal: git checkout: memperbarui jalur tidak kompatibel dengan berpindah cabang.
  Apakah Anda bermaksud untuk memeriksa 'origin / remote_branch' yang tidak dapat diselesaikan sebagai commit?

Larutan

Jika Anda menerima pesan ini, Anda harus terlebih dahulu melakukan git fetch origin dimana origin adalah nama dari repositori jarak jauh sebelum menjalankan git checkout remote_branch. Berikut contoh lengkap dengan tanggapan:

$ 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, berlari git fetch origin mengambil semua cabang jarak jauh yang belum kami setel untuk melacak di komputer lokal kami. Dari sana, karena kita sekarang memiliki ref ke cabang terpencil, kita bisa langsung lari git checkout remote_branch dan kami akan mendapatkan manfaat dari pelacakan jarak jauh.


390
2017-12-07 20:52



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

git fetch origin 'remote_branch':'local_branch_name'

Ini akan mengambil cabang jarak jauh dan membuat cabang lokal baru (jika belum ada) dengan nama local_branch_namedan melacak satu remote di dalamnya.


175
2017-10-18 05:55



Ini akan DWIM untuk asal terpencil yang tidak bernama (dokumentasi):

$ git checkout -t remote_name/remote_branch

Untuk menambahkan remote baru, Anda perlu melakukan yang berikut terlebih dahulu:

$ git remote add remote_name location_of_remote
$ git fetch remote_name

Yang pertama memberitahu Git remote yang ada, yang kedua mendapat komit.


100
2018-04-27 22:37



Menggunakan:

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

Jawaban lain tidak sesuai dengan Git modern dalam kasus saya yang ramah. Anda mungkin perlu menarik terlebih dahulu jika cabang jarak jauh itu baru, tetapi saya belum memeriksa kasus itu.


89
2018-02-21 10:58



Untuk mengkloning repositori Git, lakukan:

git clone <either ssh url /http url>

Perintah di atas memeriksa semua cabang, tetapi hanya master cabang akan diinisialisasi. Jika Anda ingin checkout cabang lain, lakukan:

git checkout -t origin/future_branch (for example)

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

Jika Anda ingin mengganti nama cabang lokal Anda saat checkout:

git checkout -t -b enhancement origin/future_branch

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

Dokumentasi


45
2018-01-21 10:04



baik, jawabannya mudah ... Anda pada dasarnya melihat cabang, tetapi Anda belum memiliki salinan lokal ...

Kamu butuh fetch cabang...

Anda cukup mengambil dan kemudian checkout ke cabang, gunakan perintah satu baris di bawah untuk melakukan itu:

git fetch && git checkout test

Saya juga membuat gambar di bawah ini untuk Anda bagikan perbedaannya, lihat caranya fetch bekerja dan juga bagaimana hal itu berbeda pull:

git fetch


41
2017-09-05 14:20