it-swarm-id.com

Bagaimana cara saya membuka cabang Git jarak jauh?

Seseorang mendorong cabang bernama test dengan git Push Origin test ke repositori bersama. Saya bisa melihat cabang dengan git branch -r.

Sekarang saya mencoba memeriksa cabang test jarak jauh.

Saya sudah mencoba:

  • git checkout test yang tidak melakukan apa pun

  • git checkout Origin/test memberikan * (no branch). Yang membingungkan. Bagaimana saya bisa berada di "tanpa cabang"?

Bagaimana cara saya memeriksa cabang Git jarak jauh?

6088
Juri Glass

Memperbarui

Jawaban Jakub sebenarnya membaik dalam hal ini. Dengan versi Git ≥ 1.6.6, dengan hanya satu jarak jauh, Anda bisa melakukannya:

git fetch
git checkout test

Sebagai pengguna masukomi menunjukkan dalam komentar, 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

atau tulisan cepat

git checkout -t <name of remote>/test

Jawaban Lama

Sebelum Anda dapat mulai bekerja secara lokal pada cabang jarak jauh, Anda perlu mengambilnya sebagaimana dipanggil 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 yang tersedia untuk checkout dengan:

git branch -v -a

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

git checkout -b test Origin/test
8411
hallski

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

git checkout test

(perhatikan bahwa 'tes' bukan 'Asal/uji') untuk melakukan magis DWIM - mery dan membuat 'tes' cabang lokal untuk Anda, yang cabang upstream akan menjadi cabang pelacakan jarak jauh 'Asal/uji '.


Output * (no branch) dalam git branch berarti Anda berada di cabang yang tidak disebutkan namanya, dalam keadaan yang disebut "HEAD terpisah" (HEAD menunjuk langsung ke komit, dan bukan referensi simbolis ke beberapa cabang lokal). Jika Anda membuat beberapa komitmen pada cabang yang tidak disebutkan namanya ini, Anda selalu dapat membuat cabang lokal dari komit saat ini:

git checkout -b test HEAD
1190
Jakub Narębski

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

$ git branch test Origin/test

Dalam versi sebelumnya dari git, Anda membutuhkan opsi --track eksplisit, tetapi itu adalah default sekarang ketika Anda bercabang dari cabang jauh.

528
ndim

Jawaban yang diterima tidak bekerja untuk Anda?

Sementara jawaban pertama dan yang dipilih secara teknis benar , ada kemungkinan Anda belum mengambil semua objek dan referensi dari repositori jarak jauh. Jika demikian, Anda akan menerima kesalahan berikut:

$ git checkout -b remote_branch Origin/remote_branch

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

Larutan

Jika Anda menerima pesan ini, Anda harus terlebih dahulu melakukan git fetch Origin di mana Origin adalah nama repositori jarak jauh sebelum menjalankan git checkout remote_branch. Inilah 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, menjalankan git fetch Origin mengambil cabang jarak jauh yang belum kami siapkan untuk dilacak di mesin lokal kami. Dari sana, karena kita sekarang memiliki referensi ke cabang jarak jauh, kita cukup menjalankan git checkout remote_branch dan kita akan mendapatkan manfaat dari pelacakan jarak jauh.

439
Corey Ballou

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

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_name dan melacak yang jauh di dalamnya.

226
Sahil kalra

Ini akan DWIM untuk remote yang tidak bernama Origin ( dokumentasi ):

$ git checkout -t remote_name/remote_branch

Untuk menambahkan remote baru, Anda harus melakukan hal berikut terlebih dahulu:

$ git remote add remote_name location_of_remote
$ git fetch remote_name

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

105
tacaswell

Menggunakan:

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

Jawaban lain tidak bekerja dengan Git modern dalam kasus jinak saya. Anda mungkin perlu menarik dulu jika cabang jarak jauh baru, tapi saya belum memeriksa kasing itu.

100
matanster

OK, jawabannya mudah ... Pada dasarnya Anda melihat cabang, tetapi Anda belum memiliki salinan lokal! ...

Anda perlu fetch cabang ...

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

git fetch && git checkout test

Saya juga membuat gambar di bawah ini untuk Anda bagikan perbedaannya, lihat bagaimana fetch bekerja dan juga bagaimana perbedaannya dengan pull:

 git fetch

78
Alireza

Untuk mengkloning repositori Git, lakukan:

git clone <either ssh url /http url>

Perintah di atas memeriksa semua cabang, tetapi hanya cabang master yang 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 adalah future_branch.

Dokumentasi

52
Madhan Ayyasamy

Anda dapat mencoba

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
34
uma

Pertama, yang perlu Anda lakukan:

git fetch # Jika Anda tidak tahu tentang nama cabang

git fetch Origin branch_name

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

git checkout -b branch_name Origin/branch_name

-b akan membuat cabang baru dengan nama yang ditentukan dari cabang jarak jauh yang Anda pilih.

28
Silent Spectator

Perintah

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

sama dengan

 git fetch --all

lalu

 git checkout -b fixes_for_dev Origin/development

Keduanya akan membuat latest fixes_for_dev dari development

27
sreekumar

Saya menggunakan perintah berikut:

git checkout --track Origin/other_remote_branch
25
priyankvex

Jika cabang ada pada sesuatu selain remote Origin saya ingin melakukan hal berikut:

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

Ini akan mengecek cabang next pada remote upstream ke cabang lokal bernama second/next. Yang berarti jika Anda sudah memiliki cabang lokal yang bernama berikutnya tidak akan konflik.

$ git branch -a
* second/next
  remotes/Origin/next
  remotes/upstream/next
23
Kris

git branch -r mengatakan nama objek tidak valid, karena nama cabang itu tidak ada dalam daftar cabang lokal Git. Perbarui daftar cabang lokal Anda dari Asal dengan:

git remote update

Dan kemudian coba periksa kembali cabang jarak jauh Anda.

Ini berhasil untuk saya.

Saya percaya git fetch menarik cabang all remote, yang bukan yang diinginkan oleh poster aslinya.

16
webdevguy

tidak ada jawaban yang bekerja untuk saya. ini berhasil:

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

15
brianyang

git fetch && git checkout your-branch-name

15

Cukup jalankan git checkout dengan nama cabang jarak jauh. Git akan secara otomatis membuat cabang lokal yang melacak yang jauh:

git fetch
git checkout test

Namun, jika nama cabang itu ditemukan di lebih dari satu jarak jauh, ini tidak akan berfungsi karena Git tidak tahu mana 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 mempelajari konfigurasi checkout.defaultRemote , yang menentukan sebuah remote ke default ketika menyelesaikan ambiguitas tersebut.

13
Eugene Yarmash

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

Jadi ini bekerja untuk saya :

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

Penjelasan di belakang adalah bahwa saya perhatikan bahwa ketika mengambil cabang jarak jauh, ia diambil ke FETCH_HEAD:

$ git fetch Origin desired-branch
From github.com:MYTEAM/my-repo
    * branch            desired-branch -> FETCH_HEAD
13
alisa

Perintah git remote show <Origin name> akan mencantumkan semua cabang (termasuk cabang yang tidak dilacak). Kemudian Anda dapat menemukan nama cabang jarak jauh yang perlu Anda ambil.

Contoh:

$ git remote show Origin

Gunakan langkah-langkah ini untuk mengambil cabang jarak jauh:

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
10
Thushan

Cowok dan cewek lain memberikan solusinya, tapi mungkin aku bisa memberitahumu alasannya.

git checkout test yang tidak melakukan apa-apa

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

Jika jawabannya 'ya', saya bisa memberi tahu Anda penyebabnya.

Penyebabnya adalah bahwa ada file (atau folder) bernama 'test' di pohon pekerjaan Anda.

Saat git checkout xxx diuraikan,

  1. Git melihat xxx sebagai nama cabang pada awalnya, tetapi tidak ada tes nama cabang.
  2. Kemudian Git berpikir xxx adalah path, dan untungnya (atau sayangnya), ada file bernama test. Jadi git checkout xxx berarti membuang modifikasi apa pun dalam file xxx.
  3. Jika tidak ada file bernama xxx, maka Git akan mencoba membuat xxx sesuai dengan beberapa aturan. Salah satu aturan adalah membuat cabang bernama xxx jika remotes/Origin/xxx ada.
8
oldman

Untuk mendapatkan cabang yang baru dibuat

git fetch

Untuk beralih ke cabang lain

git checkout BranchName
7
Hasib Kamal

Anda dapat mulai melacak semua cabang jarak jauh 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
OzzyCzech

Ambil dari remote dan checkout cabang.

git fetch <remote_name> && git checkout <branch_name> 

Misalnya.:

git fetch Origin && fitur checkout git/XYZ-1234-Add-alert

6
Pranav

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

Sebagai contoh, saya mencoba untuk checkout cabang jarak jauh bernama #9773 tetapi perintah tidak berfungsi sebagaimana mestinya, seperti yang ditunjukkan pada gambar di bawah ini:

 enter image description here

Untuk beberapa alasan saya bertanya-tanya apakah simbol tajam (#) bisa ada hubungannya dengan itu, dan kemudian saya mencoba mengelilingi nama cabang dengan tanda kutip tunggal, seperti '#9773' rathen daripada hanya #9773, dan itu berfungsi dengan baik.

$ git checkout -b '#9773' Origin/'#9773'
1
Ulysses Alves

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

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'
1
Mehedi Hasan