Що це означає
У вашій верхній течії - віддаленому, до якого ви дзвоните origin
- більше немає, або, можливо, ніколи не було (неможливо сказати лише з цієї інформації) відділення з назвою feature/Sprint4/ABC-123-Branch
. Є одна особливо поширена причина цього: хтось (мабуть, не ти, чи ти пам’ятаєш) видалив гілку в іншому сховищі Git.
Що робити
Це залежить від того, що ви хочете . Дивіться розділ обговорення нижче. Ти можеш:
- створити або заново створити гілку на пульті, або
- видалити локальну філію або
- все, що ви можете придумати.
Обговорення
Ви повинні працювати git pull
(якщо ви працювали, git merge
ви отримаєте інше повідомлення про помилку або взагалі не було повідомлення про помилку).
Під час запуску git fetch
ваш Git з’єднується з іншим Git на основі url
рядка в [remote "origin"]
розділі конфігурації. Цей Git виконує команду ( upload-pack
), яка, крім іншого, надсилає вашому Git список всіх гілок. Ви можете використовувати, git ls-remote
щоб побачити, як це працює (спробуйте, це навчально). Ось фрагмент того, що я отримую при запуску цього в сховищі Git для git
себе:
$ 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]
У refs/heads/
списку всіх гілок , які існують на пульті дистанційного керування записом, 1 разом з відповідною фіксацією ідентифікаторів (для refs/tags/
запису ідентифікаторів можуть вказувати на об'єкти тег , а не фіксації).
Ваш Git приймає кожне з цих імен гілок та змінює його відповідно до fetch
рядків (ів) у цьому ж remote
розділі. У цьому випадку ваш Git замінює refs/heads/master
з refs/remotes/origin/master
, наприклад. Ваш Git робить це з кожною назвою філії, яка трапляється.
Він також записує оригінальні імена у спеціальний файл FETCH_HEAD
(ви можете побачити цей файл, якщо зазирнути у свій власний .git
каталог). Цей файл зберігає отримані імена та ідентифікатори.
git pull
Команда призначена як зручність коротким: він працює git fetch
на відповідний пульт, а потім git merge
(або, якщо це передбачено, git rebase
) з тим, що аргументи необхідні для об'єднання (або перебазувати) відповідно з вказівками [branch ...]
розділу. У цьому випадку у вашому [branch "feature/Sprint4/ABC-123-Branch"]
розділі йдеться про отримання origin
, а потім злиття з будь-яким ідентифікатором, знайденим під назвою refs/heads/feature/Sprint4/ABC-123-Branch
.
Оскільки під цією назвою нічого не знайдено, git pull
скаржиться і зупиняється.
Якщо ви запустили це як два окремі етапи, git fetch
а потім git merge
(або git rebase
), ваш Git перегляне ваші кешовані remotes/origin/
гілки віддаленого відстеження, щоб побачити, з чим об'єднатись або перезавантажити. Якщо колись була така гілка, у вас все ще може бути відділення віддаленого відстеження. У цьому випадку ви не отримаєте повідомлення про помилку. Якщо такої гілки ніколи не було, або якщо ви працювали git fetch
з --prune
(яка видаляє мертві гілки віддаленого відстеження), так що у вас немає відповідної гілки віддаленого відстеження, ви отримаєте скаргу, але вона посилатиметься на неї origin/feature/Sprint4/ABC-123-Branch
.
В будь-якому випадку ми можемо зробити висновок, що feature/Sprint4/ABC-123-Branch
зараз немає на віддаленому імені origin
.
Це, ймовірно, існувало свого часу, і ви, ймовірно, створили свою локальну гілку з відділення віддаленого відстеження. Якщо так, у вас, ймовірно, все ще є відділення дистанційного відстеження. Ви можете дослідити, щоб побачити, хто видалив гілку з віддаленого пристрою, і чому, або ви можете просто натиснути щось, щоб відновити її, або видалити відділення віддаленого відстеження та / або локальну гілку.
1 Ну, все, у чому він збирається визнати , принаймні. Але якщо вони спеціально не приховували деякі переліки, у список включено все.