Apa artinya ini?
Hulu Anda — kendali jarak jauh yang Anda hubungi origin— tidak lagi memiliki, atau mungkin tidak pernah (tidak mungkin untuk mengetahui dari informasi ini sendirian) cabang bernamafeature/Sprint4/ABC-123-Branch . Ada satu alasan yang sangat umum untuk itu: seseorang (mungkin bukan Anda, atau Anda akan ingat) menghapus cabang di repositori Git lainnya.
Apa yang harus dilakukan
Ini tergantung pada apa yang Anda inginkan . Lihat bagian diskusi di bawah ini. Kamu bisa:
- buat atau buat ulang cabang pada remote, atau
- hapus cabang lokal Anda, atau
- hal lain yang dapat Anda pikirkan.
Diskusi
Anda harus menjalankan git pull(jika Anda menjalankan git mergeAnda akan mendapatkan pesan kesalahan yang berbeda, atau tidak ada pesan kesalahan sama sekali).
Ketika Anda menjalankan git fetch, Git Anda menghubungi Git lain, berdasarkan pada urlbaris di bawah [remote "origin"]bagian konfigurasi Anda. Git itu menjalankan perintah ( upload-pack) yang, antara lain, mengirimkan Git Anda daftar semua cabang. Anda dapat menggunakannya git ls-remoteuntuk melihat cara kerjanya (coba, ini mendidik). Ini adalah cuplikan dari apa yang saya dapatkan ketika menjalankan ini di repositori Git untuk gitdirinya sendiri:
$ git ls-remote origin
From [url]
bbc61680168542cf6fd3ae637bde395c73b76f0f HEAD
60115f54bda3a127ed3cc8ffc6ab6c771cbceb1b refs/heads/maint
bbc61680168542cf6fd3ae637bde395c73b76f0f refs/heads/master
5ace31314f460db9aef2f1e2e1bd58016b1541f1 refs/heads/next
9e085c5399f8c1883cc8cdf175b107a4959d8fa6 refs/heads/pu
dd9985bd6dca5602cb461c4b4987466fa2f31638 refs/heads/todo
[snip]
The refs/heads/entri daftar semua cabang yang ada pada remote, 1 bersama dengan yang sesuai komit ID (untuk refs/tags/entri ID mungkin menunjukkan tag objek daripada komit).
Git Anda mengambil setiap nama cabang ini dan mengubahnya sesuai dengan fetchbaris di remotebagian yang sama . Dalam hal ini, Git Anda menggantikan refs/heads/masterdengan refs/remotes/origin/master, misalnya. Git Anda melakukan ini dengan setiap nama cabang yang muncul.
Itu juga mencatat nama asli dalam file khusus FETCH_HEAD(Anda dapat melihat file ini jika Anda mengintip ke .gitdirektori Anda sendiri ). File ini menyimpan nama dan ID yang diambil.
The git pullperintah dimaksudkan sebagai cut kenyamanan singkat: itu berjalan git fetchpada tepat remote, dan kemudian git merge(atau, jika diinstruksikan, git rebase) dengan apa pun argumen yang diperlukan untuk menggabungkan (atau rebase) seperti yang diarahkan oleh [branch ...]bagian. Dalam hal ini, [branch "feature/Sprint4/ABC-123-Branch"]bagian Anda mengatakan untuk mengambil origin, lalu bergabung dengan ID apa pun yang ditemukan di bawah nama refs/heads/feature/Sprint4/ABC-123-Branch.
Karena tidak ada yang ditemukan dengan nama itu, git pullmengeluh dan berhenti.
Jika Anda menjalankan ini sebagai dua langkah terpisah, git fetchdan kemudian git merge(atau git rebase), Git Anda akan melihat remotes/origin/cabang-cabang pelacakan jarak jauh yang di- cache Anda untuk melihat apa yang akan digabungkan atau dirangkum ulang. Jika ada cabang seperti itu pada satu waktu, Anda mungkin masih memiliki cabang pelacakan jarak jauh. Dalam hal ini Anda tidak akan mendapatkan pesan kesalahan. Jika tidak pernah ada cabang seperti itu, atau jika Anda telah menjalankan git fetchdengan --prune(yang menghapus cabang pelacakan jarak jauh yang mati), sehingga Anda tidak memiliki cabang pelacakan jarak jauh yang sesuai, Anda akan mendapatkan keluhan, tetapi origin/feature/Sprint4/ABC-123-Branchsebaliknya akan merujuk .
Dalam kedua kasus , kita dapat menyimpulkan bahwa feature/Sprint4/ABC-123-Branchtidak ada sekarang pada remote yang bernama origin.
Itu mungkin memang ada pada satu waktu, dan Anda mungkin membuat cabang lokal Anda dari cabang pelacakan jarak jauh. Jika demikian, Anda mungkin masih memiliki cabang pelacak jarak jauh. Anda dapat menyelidiki untuk melihat siapa yang menghapus cabang dari jarak jauh, dan mengapa, atau Anda mungkin mendorong sesuatu untuk membuatnya kembali, atau menghapus cabang pelacakan jarak jauh dan / atau cabang lokal Anda.
1 Yah, semua itu akan mengakui , setidaknya. Tetapi kecuali mereka secara khusus menyembunyikan beberapa referensi, daftar mencakup semuanya.