Seseorang yang mendorong cabang yang disebut tes
dengan git push origin test
untuk bersama repositori. Aku bisa melihat cabang dengan git branch -r
.
Sekarang saya'm mencoba untuk memeriksa remote test
cabang.
I've mencoba:
git checkout test
yang tidak apa-apa
git checkout asal/test
memberikan * (tidak ada cabang)
. Yang lebih membingungkan. Bagaimana saya bisa berada di "tidak ada cabang"?
Bagaimana saya memeriksa remote Git branch?
Jakub's jawaban benar-benar meningkatkan ini. Dengan Git versi ≥ 1.6.6, dengan hanya satu remote, anda hanya dapat melakukan:
git fetch
git checkout test
Sebagai pengguna masukomi poin di komentar, git checkout test
TIDAK akan bekerja di modern git jika anda memiliki beberapa remote. Dalam hal ini menggunakan
git checkout -b test <name of remote>/test
atau singkatan
git checkout -t <name of remote>/test
Sebelum anda dapat mulai bekerja secara lokal pada remote branch, anda perlu untuk mengambil itu seperti yang disebut dalam jawaban di bawah ini.
Untuk mengambil cabang, anda hanya perlu:
git fetch origin
Ini akan mengambil semua remote cabang untuk anda. Anda dapat melihat cabang-cabang yang tersedia untuk checkout dengan:
git branch -v -a
Dengan remote cabang di tangan, anda sekarang perlu untuk memeriksa cabang anda tertarik, memberikan anda kerja lokal copy:
git checkout -b test origin/test
Sidenote: Dengan modern Git (>= 1.6.6), anda dapat menggunakan hanya
git checkout test
(catatan bahwa ini adalah 'test' tidak 'asal/tes') untuk melakukan magis DWIM-mery dan membuat cabang lokal 'test' bagi anda, untuk yang di hulu akan jauh-cabang pelacakan 'asal/tes'.
The * (tidak ada cabang)
di git branch
output berarti bahwa anda berada di cabang yang tidak disebutkan namanya, dalam apa yang disebut "KEPALA terpisah" negara (KEPALA poin langsung untuk melakukan, dan tidak simbolis referensi untuk beberapa cabang lokal). Jika anda membuat beberapa berkomitmen pada hal yang tidak disebutkan namanya cabang, anda selalu dapat membuat cabang lokal dari saat ini melakukan:
git checkout -b test HEAD
Dalam hal ini, anda mungkin ingin untuk membuat lokal test
cabang yang melacak jarak jauh test
cabang:
$ git branch test origin/test
Dalam versi sebelumnya dari git
, anda membutuhkan sebuah eksplisit --lagu
pilihan, tapi itu adalah default sekarang ketika anda bercabang cabang terpencil.
Sementara yang pertama dan yang dipilih jawabannya adalah secara teknis benar ada's kemungkinan anda belum diambil semua benda dan referral dari repositori. Jika itu terjadi, anda'akan menerima galat berikut:
$ git checkout -b remote_branch origin/remote_branch
fatal: git checkout: updating jalan tidak sesuai dengan beralih cabang. Apakah anda berniat untuk checkout 'asal/remote_branch' yang tidak dapat diselesaikan seperti yang dilakukannya?
Jika anda menerima pesan ini, anda harus terlebih dahulu melakukan git fetch asal
di mana asal
adalah nama dari repositori jauh sebelum menjalankan git checkout remote_branch`. Berikut ini's penuh dengan contoh 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 asaldiambil setiap jarak jauh cabang kami belum setup untuk melacak pada mesin lokal kita. Dari sana, karena kita sekarang memiliki wasit untuk cabang jarak jauh, kita hanya bisa menjalankan git checkout remote_branch
dan kita'll mendapatkan manfaat dari pelacakan jarak jauh.
Aku mencoba solusi di atas, tapi itu tidak't bekerja. Coba ini, ia bekerja:
git fetch origin 'remote_branch':'local_branch_name'
Ini akan mengambil remote cabang dan membuat yang baru cabang lokal (jika tidak sudah ada) dengan nama local_branch_name
dan melacak remote satu di dalamnya.
Ini akan DWIM untuk remote tidak disebutkan asal (dokumentasi):
$ git checkout -t remote_name/remote_branch
Untuk menambahkan sebuah remote baru, anda akan perlu melakukan hal berikut terlebih dahulu:
$ git remote add remote_name location_of_remote
$ git fetch remote_name
Pertama memberitahu Git remote ada, kedua mendapat komit.
Gunakan:
git checkout -b <BRANCH-NAME> <REMOTE-NAME>/<BRANCH-NAME>
Jawaban yang lain tidak bekerja dengan modern Git saya jinak kasus. Anda mungkin perlu untuk menarik pertama jika remote cabang baru, tapi saya belum't diperiksa kasus itu.
OK, jawabannya mudah... pada dasarnya Anda melihat cabang, tapi anda don't memiliki salinan lokal belum!...
Anda perlu untuk mengambil
cabang...
Anda hanya dapat mengambil dan kemudian checkout ke cabang, menggunakan satu baris perintah di bawah ini untuk melakukannya:
git fetch && git checkout test
Saya juga membuat gambar di bawah ini bagi anda untuk berbagi perbedaan, melihat bagaimana mengambil
bekerja dan juga bagaimana hal itu's yang berbeda untuk menarik
:
Untuk menduplikasi sebuah repositori Git, lakukan:
git clone <either ssh url /http url>
Perintah di atas akan memeriksa semua cabang, tapi hanya master
cabang akan diinisialisasi. Jika anda ingin pelajari cabang-cabang lain, lakukan:
git checkout -t origin/future_branch (for example)
Perintah ini keluar remote cabang, dan cabang lokal anda akan menjadi nama yang sama sebagai remote branch.
Jika anda ingin menimpa cabang lokal anda nama di checkout:
git checkout -t -b enhancement origin/future_branch
Sekarang cabang lokal anda nama adalah tambahan
, tapi anda remote branch nama future_branch
.
Pertama, yang perlu anda lakukan:
git fetch
# Jika anda don't tahu tentang nama cabang
git fetch origin branch_name
Kedua, anda dapat memeriksa cabang remote ke lokal anda dengan:
git checkout -b branch_name origin/branch_name
-b
akan membuat cabang baru di nama tertentu dari remote yang dipilih cabang.
Perintah
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 terbaru fixes_for_dev
dari pembangunan
Saya menggunakan perintah berikut:
git checkout --track origin/other_remote_branch
Jika cabang pada sesuatu yang lain dari yang asal
remote saya ingin melakukan hal-hal berikut:
$ git fetch
$ git checkout -b second/next upstream/next
Ini akan checkout berikutnya
cabang atas hulu
remote ke cabang lokal yang disebut kedua/berikutnya
. Yang berarti jika anda sudah memiliki cabang lokal bernama berikutnya tidak akan konflik.
$ git branch -a
* second/next
remotes/origin/next
remotes/upstream/next
Aku terjebak dalam situasi yang melihat kesalahan: pathspec 'yang diinginkan-cabang' tidak sesuai file(s) diketahui git.
untuk semua saran di atas. I'm pada 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 balik ini adalah bahwa saya'telah memperhatikan bahwa ketika mengambil remote branch, itu diambil untuk FETCH_HEAD:
$ git fetch origin desired-branch
From github.com:MYTEAM/my-repo
* branch desired-branch -> FETCH_HEAD
git branch -r
kata nama objek adalah tidak valid, karena cabang yang nama isn't Git's cabang lokal daftar. Update cabang lokal anda daftar dari asal dengan:
git remote update
Dan kemudian mencoba memeriksa remote cabang lagi.
Ini bekerja untuk saya.
Saya percaya git fetch
menarik dalam semua remote cabang, yang tidak apa yang asli poster inginkan.
Cukup jalankan git checkout
dengan nama remote branch. Git akan secara otomatis membuat]1 cabang lokal yang melacak jarak jauh satu:
git fetch
git checkout test
Namun, jika cabang yang nama ini ditemukan di lebih dari satu remote, ini tidak't bekerja sebagai Git doesn't tahu di mana untuk digunakan. Dalam hal ini anda dapat menggunakan:
git checkout --track origin/test
atau
git checkout -b test origin/test
Di 2.19, Git belajar checkout.defaultRemote
konfigurasi, yang menentukan remote untuk default ketika menyelesaikan ambiguitas.
The git remote show <asal nama>
perintah ini akan menampilkan semua cabang (termasuk un-dilacak cabang). Kemudian anda dapat menemukan remote branch nama yang anda perlu untuk mengambil.
Contoh:
$ git remote show origin
Gunakan langkah-langkah ini untuk mengambil remote cabang:
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