tag checkout git, git pull gagal di cabang

133

Saya telah mengkloning repositori git dan kemudian memeriksa sebuah tag:

# git checkout 2.4.33 -b my_branch

Ini OK, tetapi ketika saya mencoba untuk menjalankan git pulldi cabang saya, git meludahkan kesalahan ini:

Tidak ada informasi pelacakan untuk cabang saat ini. Silakan tentukan cabang mana yang ingin Anda gabungkan. Lihat git-pull (1) untuk detailnya

git pull <remote> <branch>

Jika Anda ingin mengatur informasi pelacakan untuk cabang ini, Anda dapat melakukannya dengan:

git branch --set-upstream new origin/<branch>

Saya git pullhanya ingin memperbarui cabang utama dan membiarkan cabang saya saat ini saja (toh itu tag). Apakah hal seperti ini mungkin?

Alasan saya membutuhkan ini adalah karena saya memiliki skrip otomatis yang selalu git menarik repositori dan tentu saja gagal karena kesalahan di atas ..

alesko
sumber

Jawaban:

114

Sunting: Untuk versi Git yang lebih baru, --set-upstream mastertelah ditinggalkan, Anda sebaiknya menggunakan --set-upstream-to:

git branch --set-upstream-to=origin/master master

Saat diminta, Anda bisa menjalankan:

git branch --set-upstream master origin/master

Setelah itu, Anda cukup menjalankan git pulluntuk memperbarui kode Anda.

Vincent Wen
sumber
5
Ini memecahkan masalah. Tetapi saya masih harus mengerti bagaimana cabang master saya kehilangan referensi ke asalnya. Saya berada di cabang dan melakukannya git checkout master. Saya tidak bisa melakukannya git pullkarena referensi ke asal hilang. Sekarang berhasil. Terima kasih!
Ariel
'git branch --set-upstream-to = origin / master master my_branch' bekerja untuk saya
Blue Clouds
90

Saya memiliki masalah yang sama dan memperbaikinya dengan perintah ini:

$ git push -u origin master

Dari file bantuan, -u pada dasarnya menetapkan default untuk tarikan:

-u, --set-upstream`

  For every branch that is up to date or successfully pushed, add 
  upstream (tracking) reference, used by argument-less git-pull(1) and
  other commands. For more information, see branch.<name>.merge in 
  git-config(1).
Simon Raik-Allen
sumber
48

Coba perintah ini:

git pull origin master
git push -u origin master
navins
sumber
9

Beralih kembali ke cabang utama menggunakan

$ git checkout master

dan kemudian jalankan git pulloperasinya

$ git pull origin/master

Setelah itu, Anda dapat kembali ke Anda my_branchlagi.

cfedermann
sumber
6
Itulah tepatnya yang saya coba hindari. Saya ingin tahu apakah ada cara "resmi" untuk melakukannya.
alesko
5

@alesko : tidak mungkin hanya dilakukan git pullsetelah checkout my_branchuntuk memperbarui mastercabang saja.
Karena git pulljuga akan bergabung ke cabang saat ini -> dalam skenario Anda kemy_branch

@Simon : itu juga akan mendorong. mengapa demikian?

$ git branch -u origin/master
Branch master set up to track remote branch master from origin.

dan menurut dokumen:

-u <upstream>
  Set up <branchname>'s tracking information so <upstream> is considered  
  <branchname>'s upstream branch. If no <branchname> is specified,  
  then it defaults to the current branch.
Casey
sumber
4

Pertama, pastikan Anda berada di cabang yang benar.
Kemudian (hanya satu kali):

git branch --track

Setelah itu ini berfungsi lagi:

git pull
drzymala
sumber
4

Anda mungkin memiliki banyak cabang. Dan cabang Anda saat ini tidak mengatur hulu di jarak jauh.

Langkah-langkah untuk memperbaikinya:

git checkout branch_name
git branch --set-upstream-to=origin/remote_branch_name local_branch_name

misalnya

// this set upstream of local branch develop to remote branch  origin/develop,
git branch --set-upstream-to=origin/develop develop

Setelah melakukan ini, ketika Anda melakukannya git pull, itu menarik dari cabang yang ditentukan.

Eric Wang
sumber
3

Anda bisa menentukan cabang apa yang ingin Anda tarik:

git pull origin master

Atau Anda bisa mengaturnya sehingga cabang master lokal Anda melacak cabang master github sebagai upstream:

git branch --set-upstream-to=origin/master master
git pull

Pelacakan cabang ini diatur untuk Anda secara otomatis ketika Anda mengkloning repositori (hanya untuk cabang default), tetapi jika Anda menambahkan remote ke repositori yang ada, Anda harus mengatur sendiri pelacakannya. Untungnya, saran yang diberikan oleh git membuatnya mudah diingat bagaimana melakukannya.

--set-upstream tidak digunakan lagi di git 1.9.x, tampaknya. Ke depan Anda ingin menggunakan sesuatu seperti

git branch -u origin/master

dengan asumsi Anda sudah memeriksa master. Jika tidak, git branch -u origin/master masterakan berhasil

Akash Kandpal
sumber
2

Coba ini

git checkout master

git pull origin master
vanarajcs
sumber
2
Ini tidak benar-benar menjawab pertanyaan. Juga, meskipun tidak ada jawaban yang diterima, orang yang memilih teratas jauh lebih cocok sebagai jawaban untuk pertanyaan lama ini
1414
1

Anda perlu mengatur pelacakan Anda (hulu) untuk cabang saat ini

git branch --set-upstream master origin/master

Sudah tidak digunakan lagi, Anda dapat menggunakan --track flag

git branch --track master origin/master

Saya juga suka referensi dokumen yang diperhatikan oleh @casey:

-u <upstream>
  Set up <branchname>'s tracking information so <upstream> is considered  
  <branchname>'s upstream branch. If no <branchname> is specified,  
  then it defaults to the current branch.
Jorman Bustos
sumber
1

Apa yang berhasil bagi saya adalah: cabang git --set-upstream-to = master asal Ketika saya melakukan penarikan lagi saya hanya mendapat pembaruan dari master dan peringatan itu hilang.

Jason D
sumber
1

Jika seperti saya Anda harus melakukan ini sepanjang waktu, Anda dapat mengatur alias untuk melakukannya secara otomatis dengan menambahkan berikut ini ke .gitconfigfile Anda :

[alias]
    set-upstream = !git branch --set-upstream-to=origin/`git symbolic-ref --short HEAD`

Saat Anda melihat pesan There is no tracking information..., jalankan saja git set-upstream, lalugit push lagi.

Terima kasih kepada https://zarino.co.uk/post/git-set-upstream/

rjmunro
sumber
0

Untuk sekadar mengunduh pembaruan:

git fetch origin master

Namun, ini hanya memperbarui referensi yang disebut origin/master. Cara terbaik untuk memperbarui lokal Anda masteradalah checkout / gabung yang disebutkan dalam komentar lain. Jika Anda dapat menjamin bahwa lokal Anda masterbelum menyimpang dari trunk utama yang origin/masteraktif, Anda dapat menggunakan git update-refuntuk memetakan arus Anda masterke titik baru, tetapi itu mungkin bukan solusi terbaik untuk digunakan secara teratur ...

Twalberg
sumber
0

Perintah ini sudah usang: git branch --set-upstream master origin/master

Jadi, ketika mencoba mengatur pelacakan, ini adalah perintah yang bekerja untuk saya:

git branch --set-upstream-to=origin/master master
Aaron Lelevier
sumber