Saya mendapat pesan ini dari Git:
Anda diminta untuk menarik dari 'asal' jarak jauh, tetapi tidak menentukan cabang. Karena ini bukan remote terkonfigurasi default untuk cabang Anda saat ini, Anda harus menentukan cabang pada baris perintah.
Adakah yang bisa menjelaskannya? dan yang lebih penting bagaimana cara memperbaikinya?
git pull
menarik dan menggabungkan dengan cabang saat ini sehingga perilakunya sepenuhnya tergantung pada cabang mana yang diperiksa, dan dengan HEAD yang terpisah (tidak ada cabang yang diperiksa), tidak mungkin ia dapat mengetahui cabang mana yang harus ditarik.Untuk memperbaikinya, dengan asumsi Anda berada di
master
cabang dan ingin menarikmaster
cabang dariorigin
jarak jauh, dalam versi Git yang cukup baru (1.8 atau lebih baru):(Secara analogi untuk cabang dan / atau remote lain.)
Jika Anda dapat menggabungkan ini dengan dorongan, itu bahkan lebih pendek:
Setelah itu, polos
git pull
/git push
akan melakukan apa yang Anda harapkan.Selama seri Git 1.7,
git branch
tidak ada-u
sakelar (hanya adagit push
), dan sebaliknya Anda harus menggunakan lebih lama--set-upstream
:Perhatikan pembalikan argumen dibandingkan dengan
-u
. Saya meraba-raba pesanan ini lebih dari sekali.Semua ini, omong-omong, adalah singkatan untuk melakukan hal berikut, yang masih dapat Anda lakukan secara eksplisit:
Sebelum 1.7, Anda harus melakukannya dengan cara ini.
sumber
git branch --set-upstream master origin/master
-u
opsi ini tidak terdokumentasigit branch
dalam versi saya, 1.8.5.3, membuat dokumentasi Anda di sini menjadi lebih penting. Dan, sebagai catatan Anda, opsi tersebut tidak tersedia di versi 1.7. *. Karena-u
singkatnya--set-upstream
, bukankah urutan argumennya harus dibalik seperti yang Anda lakukan--set-upstream
karena komentar @ EvanDonovan?git branch -u origin/master master
) , perintah itu berfungsi seperti yang diharapkan / dimaksudkan untuk saya: "Master cabang disiapkan untuk melacak master cabang jarak jauh dari asal."-u
switch sebenarnya tidak bentuk pendek dari--set-upstream
. Urutan argumennya secara efektif dibalik dari urutan untuk--set-upstream
. Saya pikir itu baru kemudian--set-upstream-to
(perhatikan "-untuk") diperkenalkan, yang-u
sekarang sebenarnya merupakan bentuk singkat dari.Pesan mengatakan dengan tepat tentang apa itu. Cabang Anda saat ini tidak terkait dengan (tidak melacak) cabang mana pun di asalnya . Jadi git tidak tahu harus menarik apa.
Apa yang harus dilakukan? Itu tergantung...
Dalam situasi yang paling umum Anda mengerjakan beberapa cabang lokal xyz yang bercabang dari master yang dikloning dari master asal . Cara yang biasa untuk mengatasinya adalah dengan beralih ke master dan pull untuk menyinkronkannya dengan origin lalu kembali ke xyz dan
rebase master
.Tetapi dalam situasi Anda, Anda mungkin ingin melakukan sesuatu yang lain. Kami tidak dapat mengetahuinya tanpa mengetahui detail cabang dan remote Anda dan bagaimana Anda bermaksud menggunakannya.
sumber