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?
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
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
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
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.
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?
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.
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.
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.
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.
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
:
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
.
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
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.
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
Saya menggunakan perintah berikut:
git checkout --track Origin/other_remote_branch
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
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.
tidak ada jawaban yang bekerja untuk saya. ini berhasil:
git checkout -b feature/branch remotes/Origin/feature/branch
git fetch && git checkout your-branch-name
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.
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
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
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,
xxx
sebagai nama cabang pada awalnya, tetapi tidak ada tes nama cabang.xxx
adalah path, dan untungnya (atau sayangnya), ada file bernama test. Jadi git checkout xxx
berarti membuang modifikasi apa pun dalam file xxx
.xxx
, maka Git akan mencoba membuat xxx
sesuai dengan beberapa aturan. Salah satu aturan adalah membuat cabang bernama xxx
jika remotes/Origin/xxx
ada.Untuk mendapatkan cabang yang baru dibuat
git fetch
Untuk beralih ke cabang lain
git checkout BranchName
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 ;
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
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:
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'
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'