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 merge
Anda 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 url
baris 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-remote
untuk melihat cara kerjanya (coba, ini mendidik). Ini adalah cuplikan dari apa yang saya dapatkan ketika menjalankan ini di repositori Git untuk git
dirinya 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 fetch
baris di remote
bagian yang sama . Dalam hal ini, Git Anda menggantikan refs/heads/master
dengan 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 .git
direktori Anda sendiri ). File ini menyimpan nama dan ID yang diambil.
The git pull
perintah dimaksudkan sebagai cut kenyamanan singkat: itu berjalan git fetch
pada 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 pull
mengeluh dan berhenti.
Jika Anda menjalankan ini sebagai dua langkah terpisah, git fetch
dan 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 fetch
dengan --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-Branch
sebaliknya akan merujuk .
Dalam kedua kasus , kita dapat menyimpulkan bahwa feature/Sprint4/ABC-123-Branch
tidak 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.