Seseorang mendorong cabang yang dipanggil test
dengan git push origin test
ke repositori bersama. Saya bisa melihat cabang dengan git branch -r
.
Sekarang saya mencoba untuk memeriksa test
cabang jarak jauh .
Saya sudah mencoba:
git checkout test
yang tidak melakukan apa-apagit checkout origin/test
memberi* (no branch)
. Yang membingungkan. Bagaimana saya bisa berada di "no branch"?
Bagaimana cara memeriksa cabang Git jarak jauh?
git
git-checkout
remote-branch
Juri Glass
sumber
sumber
upstream
, bukan hanyaorigin
, dan setiap jawaban yang disarankan tidak melakukan apa pun yang sangat membantu (pun-intended). EDIT - maafkan saya, banyak saran yang terkandung dalam 2 jawaban teratas tidak berguna; Yang ketiga (git branch test origin/test
) adalah yang berfungsi. Senang 2 teratas memiliki 20x jumlah suara ...Jawaban:
Memperbarui
Jawaban Jakub sebenarnya membaik dalam hal ini. Dengan versi Git ≥ 1.6.6, dengan hanya satu jarak jauh, Anda bisa melakukannya:
Sebagai pengguna masukomi menunjukkan dalam komentar,
git checkout test
TIDAK akan bekerja di git modern jika Anda memiliki beberapa remote. Dalam hal ini digunakanatau steno
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:
Ini akan mengambil semua cabang jarak jauh untuk Anda. Anda dapat melihat cabang yang tersedia untuk checkout dengan:
Dengan cabang jarak jauh di tangan, Anda sekarang perlu memeriksa cabang yang Anda minati, memberi Anda copy pekerjaan lokal:
sumber
git fetch
melakukannya sebelum ini agar git mengetahuiorigin/test
git fetch origin test
origin/test
yang tidak dapat diselesaikan sebagai komit?"git checkout test
TIDAK akan bekerja di git modern jika Anda memiliki beberapa remote yang memiliki nama cabang yang sama . Tidak tahu yang mana yang harus digunakan.Sidenote: Dengan Git modern (> = 1.6.6 ), Anda dapat menggunakannya secara adil
(perhatikan bahwa ini adalah 'uji' bukan 'asal / uji') untuk melakukan DWIM magis -mengerjakan dan membuat 'tes' cabang lokal untuk Anda, yang cabang upstreamnya akan menjadi cabang pelacakan 'asal / uji'.
The
* (no branch)
digit branch
berarti output yang Anda berada di cabang yang tidak disebutkan namanya, dalam apa yang disebut "KEPALA terpisah" negara (poin KEPALA langsung untuk melakukan, dan bukan merupakan referensi simbolis untuk 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:** EDIT (oleh editor bukan penulis) **
Saya menemukan komentar yang terkubur di bawah ini yang sepertinya memodernisasi jawaban ini:
penekanan pada
git checkout origin/test
sumber
error: pathspec 'branch_name' did not match any file(s) known to git.
maka Anda harus melakukan git fetch terlebih dahulu.Dalam hal ini, Anda mungkin ingin membuat
test
cabang lokal yang melacaktest
cabang jarak jauh :Dalam versi sebelumnya
git
, Anda memerlukan--track
opsi eksplisit , tetapi itu adalah default sekarang saat Anda bercabang dari cabang jarak jauh.sumber
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:
Larutan
Jika Anda menerima pesan ini, Anda harus terlebih dahulu melakukan di
git fetch origin
manaorigin
nama repositori jarak jauh sebelum menjalankangit checkout remote_branch
. Inilah contoh lengkap dengan tanggapan:Seperti yang Anda lihat, menjalankan
git fetch origin
mengambil cabang-cabang jarak jauh yang belum kami siapkan untuk melacaknya di mesin lokal kami. Dari sana, karena kita sekarang memiliki referensi ke cabang jarak jauh, kita bisa berlarigit checkout remote_branch
dan kita akan mendapat manfaat dari pelacakan jarak jauh.sumber
git checkout -b newbranch
juga berfungsi baik untuk membuat 1 langkah dan checkout cabang baru berdasarkan cabang saat ini.git ls-remote
dan satu-satunya cara untuk benar-benar menggunakannya adalahgit checkout -b [branch] --track [remote/branch]
... dan setelah itugit pull [remote] [branch]
berhasil. Yaitu, itu benar-benar menarik seluruh cabang, tetapi masih tidak akan mencantumkannya.git fetch other_remote only_branch
, Anda masih mendapatkanfatal
kesalahan. Anda harusgit fetch other_remote
tanpa nama cabang. Desain yang aneh.Saya mencoba solusi di atas, tetapi tidak berhasil. Coba ini, ini berhasil:
Ini akan mengambil cabang jarak jauh dan membuat cabang lokal baru (jika belum ada) dengan nama
local_branch_name
dan melacak cabang jarak jauh di dalamnya.sumber
Ini akan DWIM untuk remote tidak bernama asal ( dokumentasi ):
Untuk menambahkan remote baru, Anda harus melakukan hal berikut terlebih dahulu:
Yang pertama memberitahu Git bahwa remote itu ada, yang kedua mendapat komit.
sumber
Menggunakan:
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.
sumber
baik , jawabannya mudah ... Pada dasarnya Anda melihat cabang, tetapi Anda belum memiliki salinan lokal! ...
Anda perlu ke
fetch
cabang ...Anda cukup mengambil dan kemudian checkout ke cabang, gunakan perintah satu baris di bawah ini untuk melakukannya:
Saya juga membuat gambar di bawah ini untuk Anda bagikan perbedaannya, lihat cara
fetch
kerjanya dan juga bagaimana perbedaannya denganpull
:sumber
test
terlihat seperti cabang baru, sehingga tidak mungkin hadir secara lokal. Kalau tidak, Anda bisa menariknya lebih mudah dengan satugit pull
perintah.fetch
tanpapull
meninggalkan perubahan pada salinan yang diambil tetapi tidak di cabang lokal, menyebabkan cabang lokal Anda tidak mutakhir?Untuk mengkloning repositori Git, lakukan:
Perintah di atas memeriksa semua cabang, tetapi hanya
master
cabang yang akan diinisialisasi. Jika Anda ingin checkout cabang lain, lakukan: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:
Sekarang nama cabang lokal Anda
enhancement
, tetapi nama cabang jarak jauh Andafuture_branch
.Dokumentasi
sumber
master
, ini tidak akan berfungsi.Anda dapat mencoba
atau
sumber
--track
tidak lagi diperlukan di versi git yang lebih baru, karena diset secara default, seperti yang dijelaskan dalam jawaban sebelumnya .Pertama, yang perlu Anda lakukan:
git fetch
# Jika Anda tidak tahu tentang nama cabangKedua, Anda dapat memeriksa cabang jarak jauh ke lokal Anda dengan:
-b
akan membuat cabang baru dengan nama yang ditentukan dari cabang jarak jauh yang Anda pilih.sumber
Saya menggunakan perintah berikut:
sumber
Perintah
sama dengan
lalu
Keduanya akan membuat
latest fixes_for_dev
daridevelopment
sumber
Jika cabang ada pada sesuatu selain
origin
remote saya suka melakukan hal berikut:Ini akan mengecek
next
cabang padaupstream
remote ke cabang lokal yang disebutsecond/next
. Yang berarti jika Anda sudah memiliki cabang lokal yang bernama berikutnya itu tidak akan konflik.sumber
git fetch && git checkout your-branch-name
sumber
tidak satu pun dari jawaban ini bekerja untuk saya. ini berhasil:
git checkout -b feature/branch remotes/origin/feature/branch
sumber
git
ketika memanggilgit branch -a
perintah, tapi saya tidak yakin, jadi saya hanya menggunakangit checkout -b apps/FEATURE/branch origin/apps/FEATURE/branch
dan tampaknya berfungsi. Pesan:Branch 'apps/FEATURE/branch' set up to track remote branch 'apps/FEATURE/epicBranch' from 'origin'. Switched to a new branch 'apps/FEATURE/branch'
Saya terjebak dalam situasi melihat
error: pathspec 'desired-branch' did not match any file(s) known to git.
semua saran di atas. Saya di git versi 1.8.3.1.Jadi ini berhasil bagi saya :
Penjelasan di belakang adalah bahwa saya perhatikan bahwa ketika mengambil cabang jarak jauh, ia diambil ke FETCH_HEAD:
sumber
Cukup jalankan
git checkout
dengan nama cabang jarak jauh. Git akan secara otomatis membuat cabang lokal yang melacak yang jauh:Namun, jika nama cabang itu ditemukan di lebih dari satu remote, ini tidak akan berfungsi karena Git tidak tahu mana yang harus digunakan. Dalam hal ini Anda dapat menggunakan:
atau
Pada 2.19 , Git mempelajari
checkout.defaultRemote
konfigurasi, yang menentukan remote ke default ketika menyelesaikan ambiguitas tersebut.sumber
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:Dan kemudian coba periksa kembali cabang jarak jauh Anda.
Ini berhasil untuk saya.
Saya percaya
git fetch
menarik semua cabang terpencil, yang bukan apa yang diinginkan poster asli.sumber
git remote update
juga akan mengambil semua cabang jarak jauh .The
git remote show <origin name>
perintah akan daftar semua cabang (termasuk un-dilacak cabang). Kemudian Anda dapat menemukan nama cabang jarak jauh yang perlu Anda ambil.Contoh:
Gunakan langkah-langkah ini untuk mengambil cabang jarak jauh:
Contoh:
sumber
$ git clone -b release --single-branch --depth 5 https://github.com/user/repo.git
informasi Wron't$ git remote show origin
ini tidak mencantumkan semua cabang jarak jauh dengan repositori cabang tunggal kloning.Ambil dari remote dan checkout cabang.
Misalnya:
sumber
Cowok dan cewek lain memberikan solusinya, tapi mungkin aku bisa memberitahumu alasannya.
Does nothing
tidak samadoesn't work
, jadi saya kira ketika Anda mengetik 'git checkout test' di terminal Anda dan tekan tombol enter, tidak ada pesan 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.
Ketika
git checkout xxx
diuraikan,xxx
sebagai nama cabang pada awalnya, tetapi tidak ada uji nama cabang.xxx
adalah jalan, dan untungnya (atau sayangnya), ada file bernama test. Jadigit checkout xxx
artinya buang segala modifikasi dalamxxx
file.xxx
baik, maka Git akan mencoba untuk membuatxxx
sesuai dengan beberapa aturan. Salah satu aturan adalah membuat cabang bernamaxxx
jikaremotes/origin/xxx
ada.sumber
Untuk mendapatkan cabang yang baru dibuat
Untuk beralih ke cabang lain
sumber
Anda dapat mulai melacak semua cabang jarak jauh dengan skrip Bash berikut:
Ini juga versi single-line:
sumber
git checkout -b "Branch_name" [B berarti Buat cabang lokal]
cabang git --semua
git checkout -b "Nama Cabang Anda"
cabang git
berhasil checkout dari cabang utama ke cabang dev
sumber
untuk mendapatkan semua cabang jarak jauh gunakan ini:
lalu checkout ke cabang:
sumber
Gunakan
fetch
untuk menarik semua remote AndaUntuk membuat daftar cabang jarak jauh:
Untuk daftar semua cabang Anda
Untuk checkout / mengganti cabang
sumber
git branch -l
dan tidak ada cabang yang jauh ditampilkan.git pull --all
ataugit fetch --all
git branch -l
masih menunjukkan hanya cabang lokal . Tampaknya berfungsi persis sepertigit branch
tanpa-l
, jadi apa alasannya-l
?master
bukan cabang jarak jauh.-l
panji untuk daftar. Anda dapat menggunakan--list
jugaBagi kami, sepertinya
remote.origin.fetch
konfigurasi memberi masalah. Karena itu, kami tidak dapat melihat cabang jarak jauh selainmaster
, jadigit fetch [--all]
tidak membantu. Tidakgit checkout mybranch
jugagit checkout -b mybranch --track origin/mybranch
tidak berhasil, meskipun tentu saja di remote.Konfigurasi sebelumnya hanya boleh
master
diambil:Perbaiki dengan menggunakan
*
dan mengambil informasi baru dari asal:Sekarang kita dapat
git checkout
cabang jarak jauh secara lokal.Tidak tahu bagaimana konfigurasi ini berakhir di repo lokal kami.
sumber
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 sedang Anda bicarakan.
Sebagai contoh, saya mencoba untuk checkout cabang jauh bernama
#9773
tetapi perintah tidak berfungsi dengan benar, 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 dari sekadar#9773
, dan untungnya itu bekerja dengan baik.sumber
#
karakter digunakan untuk komentar sehingga apa pun setelah#
akan diabaikan. Ini adalah hal shell dan bukan sesuatu yang spesifik untuk git. Menggunakan tanda kutip backslash sebelum#
harus cukup.Ikuti perintah untuk membuat folder kosong. Masukkan itu dan gunakan perintah ini:
sumber